Android悬浮购买框效果优化:仿美团、大众点评修改版

0 下载量 134 浏览量 更新于2024-09-01 收藏 164KB PDF 举报
"这篇文章除了介绍如何在Android中实现类似美团网和大众点评的购买框悬浮效果的修改版,还提到了作者在先前实现过程中遇到的问题以及解决方法。作者原先使用ScrollView滚动监听和Handler来获取Y值,但在快速滑动时出现卡顿和布局重叠的问题。在尝试了ScrollingTricks库后,虽然找到了更接近原生效果的解决方案,但该库仅支持API11及以上版本,限制了兼容性。因此,作者决定自己修改并优化了这一效果,简化了实现方式。文章提供了一个自定义的MyScrollView类,通过在onScrollChanged()方法中直接获取滚动的Y值来改进监听机制。" 文章详细介绍了如何创建一个自定义的ScrollView子类——MyScrollView,该类包含一个OnScrollListener接口,允许开发者监听ScrollView的滚动事件。代码示例展示了如何在MyScrollView的构造函数中初始化,并提供了设置监听器的方法: ```java public class MyScrollView extends ScrollView { private OnScrollListener onScrollListener; public MyScrollView(Context context) { this(context, null); } public MyScrollView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } / * 设置滚动接口 * @param onScrollListener */ public void setOnScrollListener(OnScrollListener onScrollListener) { this.onScrollListener = onScrollListener; } // 其他代码... @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (onScrollListener != null) { onScrollListener.onScroll(l, t, oldl, oldt); } } } ``` 这里定义了一个自定义的OnScrollListener接口: ```java public interface OnScrollListener { void onScroll(int l, int t, int oldl, int oldt); } ``` 开发者可以通过实现这个接口并在需要的地方调用setOnScrollListener()方法来获取滚动事件,从而避免了使用Handler带来的复杂性和可能的问题。 通过这种方式,作者实现了在不依赖第三方库且保持良好性能的情况下,对ScrollView滚动事件的监听,以达到类似美团和大众点评的购买框悬浮效果。这种方法对于希望在较低API级别上实现类似功能的开发者来说是很有帮助的。文章的代码示例清晰易懂,有助于读者理解和应用到自己的项目中。