2018-03-26

温习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。

你可能感兴趣的:(2018-03-26)