一 . 为什么会有事件分发机制.
android上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,
这个点击事件应该给谁呢?为了解决这个问题,就有了事件分发机制.
PhoneWindow: 是Window的实现类,Window最顶层的管理容器.
PhoneWindow通过DecorView去分发消息,DecorView通过ViewGroup去分发消息,ViewGroup再找到对应的View处理消息.
二 .三个重要的事件分发方法
- dispatchTouchEvent
- onInterceptTouchEvent
- onTouchEvent
三 .事件分发流程.
Activity -->PhoneWindow-->DecorView--->ViewGroup-->...--->View.
如果最后一个View没有对事件进行处理,那么事件将返回给Activity,如果最后Activity也没有对事件那么这个事件就会被放弃.
红色线是事件往下分发,蓝色线是事件的返回.