dispatchTouchEventonInterceptTouchEventonTouchEvent activity YNY viewgroup YYYviewYNY
注:此处的view指的的是:TextView,Button....等最终节点的view。
事件分发:public boolean dispatchTouchEvent(MotionEvent ev)
返回值(return):
true:表示事件终止向下分发,事件将会被当前view或者activity的dispatchTouchEvent消费。
false:表示事件终止向下分发,事件将会传递给上层的view或者activity的onTouchEvent消费,如
果当前为activity,则事件将会被系统消费。
super.dispatchTouchEvent(ev):将事件交给当前的事件拦截方法onInterceptTouchEvent进行处理,如果没有(view或者activity),
则传递给子view或者viewgroup的dispatchTouchEvent继续进行分发处理。
事件拦截:public boolean onInterceptTouchEvent(MotionEvent ev)
返回值(return):
true: 表示事件将被拦截,并将事件交由当前viewgroup(只有viewgroup有onInterceptTouchEvent方法)的onTouchEvent进行消费。
false:表示事件放行,继续向下分发给子view或者viewgroup的dispatchTouchEvent进行分发处理。
super.onInterceptTouchEvent(ev):表示事件将被拦截,并将事件交由当前viewgroup的onTouchEvent进行消费。
事件响应:public boolean onTouchEvent(MotionEvent ev)
返回值(return):
true:表示事件将被消费,并且此次事件终结。
false:表示事件将向上层viewgroup或者activity传递,并有上层的onTouchEvent进行接收,如果上层的onTouchEvent也返回false,
这次事件将会消失,并且接收不到下一次事件。
super.onTouchEvent(ev):和false相同。
最终要想让onTouchEvent响应:
dispatchTouchEvent返回false,向上传递给上层的onTouchEvent消费,或者系统默认super.dispatchTouchEvent,交由onInterceptTouchEvent
处理,或者继续向下分发。
onInterceptTouchEvent返回true或者super.onInterceptTouchEvent,都是被当前的onTouchEvent消费,如果当前的onTouchEvent返回false
,此次事件不会终结,会依次向上传递,并有上层的onTouchEvent响应,如果上层的onTouchEvent返回false,事件将会消失,并且
接收不到下一次的事件;如果当前的onTouchEvent返回非系统默认值,则代表此次事件终结。
