一:基础知识
View:所有控件的基类
1.View的位置参数:
2.MotionEvent和TouchSlop:
MotionEvent: 手指触摸屏幕的一系列事件
TouchSlop:滑动的最小距离,和设备系统有关
3.VelocityTracker, GestureDetetor , Scroller:
VelocityTracker: 速度追踪
GestureDetetor: 手势检测,多用于双击(滑动监听多用于 onTouchEvent )
Scroller:弹性滑动对象,配合View的computeScroller 完成
二:View 的滑动
1.scrollTo/scrollBy:
左向右滑动,为负值,上向下滑动为负值,反之,正值。
只改变内容,不改变实际位置。
2.使用动画
Translation
可以改变 View 真实位置
3.改变布局参数
LayoutParams: marginLeft
4.各种滑动方式对比
scrollTo/scrollBy : 操作简单,适合对View内容的滑动
动画:适用于没有交互的View, 和实现复杂的动画效果
改变布局参数:操作复杂,适合有交互的View
三:弹性滑动(将大的滑动分成若干次小的滑动,在一定时间段内完成)
1.Scroller:配合view的 computeScroll完成,每次重绘view
2.动画
3.使用延时策略:通过handler 或 view 的 postDelayed 完成
四:View的事件分发机制
传递规则:由外向内 dispathTouchEvent - onInterceptTouchEvent - onTouchEvent
五:滑动冲突
常见场景:
1.外部滑动和内部滑动方向不一致
2.外部滑动和内部滑动方向一致
3. 1 和 2 的嵌套使用
处理规则:
场景1 水平方向和竖直方向的距离差
场景2 和 场景3 业务上找突破点
解决方式:
1.外部拦截(常用)
2.内部拦截