* **ACTION_UP**:手指从屏幕上松开的一瞬间 * **ACTION_CANCELL**:手指保持按下操作,并从当前控件转移到外层控件时触发 * 正常情况下,一次手指触摸屏幕的行为会触发一系列点击事件,考虑如下几种情况: * 点击屏幕后松开,事件序列:DOWN→UP * 点击屏幕滑动一会再松开,事件序列为DOWN→MOVE→.....→MOVE→UP
3、描述一下View事件传递分发机制?
- 参考回答:
- View事件分发本质就是对MotionEvent事件分发的过程。即当一个MotionEvent发生后,系统将这个点击事件传递到一个具体的View上
- 点击事件的传递顺序:Activity(Window)→ViewGroup→ View
- 事件分发过程由三个方法共同完成:
- dispatchTouchEvent:用来进行事件的分发。如果事件能够传递给当前View,那么此方法一定会被调用,返回结果受当前View的onTouchEvent和下级View的dispatchTouchEvent方法的影响,表示是否消耗当前事件
- onInterceptTouchEvent:在上述方法内部调用,对事件进行拦截。该方法只在ViewGroup中有,View(不包含 ViewGroup)是没有的。一旦拦截,则执行ViewGroup的onTouchEventÿ