MotionEvent.Action_Cancel什么时候发生?
子View在处理一个Touch事件中,父View的onInterceptTouchEvent返回true,此时子View会接收到MotionEvent.Action_Cancel。
- 只要Down事件能传递到Activity的onTouchEvent, Move和Up从activity:dispatchTouchEvent------->activity:onTouchEvent。其他中间过程无需传递。
- Down事件能传递到ViewGroup的onTouchEvent,Move和Up从activity:dispatchTouchEvent------->ViewGroup:dispatchTouchEvent------->ViewGroup:onTouchEvent。其他中间过程无需传递。
- Down事件无法传递到Activity的onTouchEvent和ViewGroup的onTouchEvent,也就是说:哪儿消费,Move和Up就传递到哪儿。
无任何消费,DOWN 、MOVE 、UP 的事件传递:Activty dispatchTouchEvent = true,DOWN 、MOVE 、UP 的事件传递:
Activty dispatchTouchEvent = false,DOWN 、MOVE 、UP 的事件传递:
ViewGroup dispatchTouchEvent = true,DOWN 、MOVE 、UP 的事件传递:
ViewGroup dispatchTouchEvent = false,DOWN 、MOVE 、UP 的事件传递:
ViewGroup onInterceptTouchEvent = true,DOWN 、MOVE 、UP 的事件传递:
ViewGroup onInterceptTouchEvent= false,DOWN 、MOVE 、UP 的事件传递:(和无任何消费一样 false = super)
View dispatchTouchEvent = true,DOWN 、MOVE 、UP 的事件传递:
View dispatchTouchEvent = false,DOWN 、MOVE 、UP 的事件传递:
View onTouchEvent = true,DOWN 、MOVE 、UP 的事件传递
View onTouchEvent = false,DOWN 、MOVE 、UP 的事件传递
ViewGroup onTouchEvent = true,DOWN 、MOVE 、UP 的事件传递
ViewGroup onTouchEvent = false,DOWN 、MOVE 、UP 的事件传递
Activity onTouchEvent = true,DOWN 、MOVE 、UP 的事件传递
Activity onTouchEvent = false,DOWN 、MOVE 、UP 的事件传递