温习Android系统事件分发的机制
自上而下分成Activity,ViewGroup,和View
事件分发流程在Activity 中分发的时候,dispatchEvent()如果返回true,false,则直接被消费,不会传递,图中其他方法都不会被执行。
在ViewGroup中分发的时候
1.dispatchTouchEvent 和 onTouchEvent 一旦return true,事件就停止传递了
2.dispatchTouchEvent 和 onTouchEvent return false的时候事件都回传给父控件的onTouchEvent处理。回溯到父View的onTouchEvent处理
3.ViewGroup 想把自己分发给自己的onTouchEvent,需要拦截器onInterceptTouchEvent方法return true 把事件拦截下来。默认情况下是不拦截的
4.View 没有拦截器,为了让View可以把事件分发给自己的onTouchEvent,View的dispatchTouchEvent默认实现(super)就是把事件分发给自己的onTouchEvent。
网友评论