分三种情况:Activity(包括ActivityFragment) ,ViewGroup和View
1. Activity包含 dispatchTouchEvent, onTouchEvent
2. ViewGroup 包含 dispatchTouchEvent, onInterceptTouchEvent,onTouchEvent
1. Activity包含 dispatchTouchEvent, onTouchEvent
2. ViewGroup 包含 dispatchTouchEvent, onInterceptTouchEvent,onTouchEvent
3.
View
包含
dispatchTouchEvent,
onTouchEvent
dispatchTouchEvent:
用于事件分发
onInterceptTouchEvent:
用于事件拦截
onTouchEvent:
事件处理
测试环境--Android4.4.2
--Activity嵌套ViewGroup,ViewGroup嵌套View
dispatchTouchEvent中如果不调用 s uper.dispatchTouchEvent(event),则不处理事件分派,即不会调用本层的 onTouchEvent,也不调用子View的 dispatchTouchEvent.如果retrun true,事件就中止了,return false则返回上层的 onTouchEvent.
(也就是说 dispatchTouchEvent是本层连接上层和下层的连接点,在此处分派接下来的事件,通过return与上层通讯. )
dispatchTouchEvent:
用于事件分发
onInterceptTouchEvent:
用于事件拦截
onTouchEvent:
事件处理
测试环境--Android4.4.2
--Activity嵌套ViewGroup,ViewGroup嵌套View
dispatchTouchEvent中如果不调用 s uper.dispatchTouchEvent(event),则不处理事件分派,即不会调用本层的 onTouchEvent,也不调用子View的 dispatchTouchEvent.如果retrun true,事件就中止了,return false则返回上层的 onTouchEvent.
(也就是说 dispatchTouchEvent是本层连接上层和下层的连接点,在此处分派接下来的事件,通过return与上层通讯. )
onInterceptTouchEvent的 s uper. onInterceptTouchEvent (event)只会返回false,则不拦截.
但是return true,会直接使用当前的 onTouchEvent,return false则将事件传到子View
onTouchEvent返回false,则上层不会再下发事件,true则继续下发.
使用super. onTouchEvent()会调用 performClick().
以一个 ACTION_DOWN, ACTION_MOVE, ACTION_UP为一次循环,不再下发事件,是指本循环的事件不下发(循环哪个步骤返回false则之后的事件没有下发),下一个循环的则重新开始算.