对事件的分发支持如下:
这里的View是指textview类似的不能有子View的View,不是最大的父类View.
重写textview的时候 可以继承到dispatchTouchEvent 这是从View里面拿到的
textview类似的view里面没有这个方法 也就不会处理 但你继承了 就会处理
ACTION_CANCEL的执行 只是在你滑动超过了这个控件之外的时候 才会触发
每个轮流执行下去的都会执行ACTION_DOWN 但是只有最后处理事件的地方或者返回true的地方才会执行move和up 事件
所谓消费了此事件就是down move up都执行了 其他的 都只会执行一个down事件
顺序是ViewGroup——>ViewChildGroup——>View
如果都返回Super默认值 执行的逻辑是 执行了所有的down 但不会执行move和up方法
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
View dispatchTouchEvent 返回true 其他都默认
所有的onTouchEvent 都不会执行 其余的全部执行
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
ViewGroup dispatchTouchEvent ACTION_MOVE
ViewGroup onInterceptTouchEvent ACTION_MOVE
ViewChildGroup dispatchTouchEvent ACTION_MOVE
ViewChildGroup onInterceptTouchEvent ACTION_MOVE
View dispatchTouchEvent ACTION_MOVE
######## ……执行N次move
ViewGroup dispatchTouchEvent ACTION_UP
ViewGroup onInterceptTouchEvent ACTION_UP
ViewChildGroup dispatchTouchEvent ACTION_UP
ViewChildGroup onInterceptTouchEvent ACTION_UP
View dispatchTouchEvent ACTION_UP
View dispatchTouchEvent 返回false 其他都默认
这时候 view的onTouchEvent 不会执行 其余的down都会执行 move和up都不执行
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
View onTouchEvent 返回true 其他都默认
ViewChildGroup 和ViewGroup的onTouchEvent不会执行 别的全部动作都执行
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewGroup dispatchTouchEvent ACTION_MOVE
ViewGroup onInterceptTouchEvent ACTION_MOVE
ViewChildGroup dispatchTouchEvent ACTION_MOVE
ViewChildGroup onInterceptTouchEvent ACTION_MOVE
View dispatchTouchEvent ACTION_MOVE
View onTouchEvent ACTION_MOVE
……执行N次move
ViewGroup dispatchTouchEvent ACTION_UP
ViewGroup onInterceptTouchEvent ACTION_UP
ViewChildGroup dispatchTouchEvent ACTION_UP
ViewChildGroup onInterceptTouchEvent ACTION_UP
View dispatchTouchEvent ACTION_UP
View onTouchEvent ACTION_UP
View onTouchEvent 返回false 其他都默认 所有的down都会执行
但不会执行move和up
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent 返回true 其他都默认
这时候执行了ViewGroup和ViewChildGroup的dispatchTouchEvent的所有方法
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewGroup dispatchTouchEvent ACTION_MOVE
ViewGroup onInterceptTouchEvent ACTION_MOVE
ViewChildGroup dispatchTouchEvent ACTION_MOVE
……执行N次
ViewGroup dispatchTouchEvent ACTION_UP
ViewGroup onInterceptTouchEvent ACTION_UP
ViewChildGroup dispatchTouchEvent ACTION_UP
ViewChildGroup dispatchTouchEvent 返回false 其他都默认
这时候 执行了ViewGroup和ViewChildGroup的dispatchTouchEvent
的ACTION_DOWN方法 同时执行了ViewGroup的onTouchEvent方法 move和up不执行
猜测之后由还有activity的dispatchTouchEvent和onTouchEvent方法执行到底
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent 返回true 其他都默认
这时候 执行了ViewGroup和ViewChildGroup的所有ACTION_DOWN方法 move和up不执行
猜测 之后还由activity的dispatchTouchEvent和onTouchEvent方法执行到底
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent 返回false 其他都默认
这时候 执行了所有ACTION_DOWN方法 move和up不执行
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewChildGroup TouchEvent 返回true 其他都默认
这时候 执行了除了ViewGroup onTouchEvent外的 所有ACTION_DOWN方法
之后执行ViewGroup的dispatchTouchEvent onInterceptTouchEvent
ViewChildGroup的dispatchTouchEvent和onTouchEvent方法的move和up方法
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup dispatchTouchEvent ACTION_MOVE
ViewGroup onInterceptTouchEvent ACTION_MOVE
ViewChildGroup dispatchTouchEvent ACTION_MOVE
ViewChildGroup onTouchEvent ACTION_MOVE
……执行N次
ViewGroup dispatchTouchEvent ACTION_UP
ViewGroup onInterceptTouchEvent ACTION_UP
ViewChildGroup dispatchTouchEvent ACTION_UP
ViewChildGroup onTouchEvent ACTION_UP
ViewChildGroup TouchEvent 返回false 其他都默认
执行了所有down方法 不会执行move和up方法
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewGroup dispatchTouchEvent 返回true 其他都默认
ViewGroup的dispatchTouchEvent执行了所有的down move up操作
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup dispatchTouchEvent ACTION_MOVE
……执行N次
ViewGroup dispatchTouchEvent ACTION_UP
ViewGroup dispatchTouchEvent 返回false 其他都默认
ViewGroup的dispatchTouchEvent执行了down操作 不会有up和move操作 其他事件全部屏蔽
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent 返回true 其他都默认
ViewGroup消费了所有的down事件 都会执行 但是move和up不会执行
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent 返回false 其他都默认
执行了所有down方法 不会执行move和up方法
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent 返回true 其他都默认
执行了所有down方法 最后由ViewGroup的dispatchTouchEvent和onTouchEvent消费了move和up
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN
ViewGroup dispatchTouchEvent ACTION_MOVE
ViewGroup onTouchEvent ACTION_MOVE
……执行N次
ViewGroup dispatchTouchEvent ACTION_IP
ViewGroup onTouchEvent ACTION_MOVE
ViewGroup onTouchEvent 返回false 其他都默认
执行了所有down方法 不会执行move和up方法
ViewGroup dispatchTouchEvent ACTION_DOWN
ViewGroup onInterceptTouchEvent ACTION_DOWN
ViewChildGroup dispatchTouchEvent ACTION_DOWN
ViewChildGroup onInterceptTouchEvent ACTION_DOWN
View dispatchTouchEvent ACTION_DOWN
View onTouchEvent ACTION_DOWN
ViewChildGroup onTouchEvent ACTION_DOWN
ViewGroup onTouchEvent ACTION_DOWN