场景:当页面滚动超过一定距离后,显示回到顶部的按钮,点击按钮平滑滚动回顶部。
实现:监听页面滚动距离,与一特定值比较,控制按钮显示隐藏,点击按钮点用页面平滑滚动Api或者通过自定动画实现滚动。
存在问题:惯性滚动在页面返回顶部后并未结束,导致继续滚行下滑,使得页面无法停留在置顶状态。
解决方法:未找到有效的自带Api实现停止惯性滚动,所以考虑使用模拟点击的方式停止页面滚动。
1、使用MotionEventobtain(long downTime, long eventTime, int action,float x, float y, int metaState)方法创建一个页面内的MotionEvent.ACTION_DOWN事件,调用页面视图的dispatchTouchEvent(MotionEvent ev)传递事件
2、使用MotionEventobtain(long downTime, long eventTime, int action,float x, float y, int metaState)方法创建一个页面内的MotionEvent.ACTION_CANCEL事件,调用页面视图的dispatchTouchEvent(MotionEvent ev)传递事件
下图为kotlin实现代码:
网友评论