一 . 为什么会有事件分发机制.

 android上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,
 这个点击事件应该给谁呢?为了解决这个问题,就有了事件分发机制.

PhoneWindow: 是Window的实现类,Window最顶层的管理容器.

PhoneWindow通过DecorView去分发消息,DecorView通过ViewGroup去分发消息,ViewGroup再找到对应的View处理消息.

二 .三个重要的事件分发方法

  1. dispatchTouchEvent
  2. onInterceptTouchEvent
  3. onTouchEvent

三 .事件分发流程.

 Activity -->PhoneWindow-->DecorView--->ViewGroup-->...--->View.

如果最后一个View没有对事件进行处理,那么事件将返回给Activity,如果最后Activity也没有对事件那么这个事件就会被放弃.

红色线是事件往下分发,蓝色线是事件的返回.

results matching ""

    No results matching ""