zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

从源码角度分析android事件分发处理机制

Android事件源码 处理 分析 机制 角度 分发
2023-09-14 09:06:42 时间

正式开始之前的准备工作:

           之前也写过一篇《android事件拦截处理机制详解》的博客,通过博客的名字也可以知道那篇博客只是分析了android控件View对事件的拦截和处理,简单的总结如下:

           1)父View优先拦截当前事件,拦截不成功就让子View对当前事件进行拦截。

            2)如果拦截成功的话,就会沿着子view到父View的路径查找onTouchEvent返回true的那个子View,让该子View对该事件进行处理;

             3)同时如果某一个View对当前事件拦截成功的话,当前事件就不会继续分发给这个View的子View。

            一直在说事件,那么事件到底是指什么?这里所说的事件是指手指按下(down)、移动(move)、抬起(up)此为一个事件集合或者说是事件序列,从手指接触屏幕开始到手指离开屏幕结束。所以本篇所说的事件序列或者事件集合是指从手指刚接触屏幕到离开屏幕的那一瞬间产生的各个事件:

事件序列为:ACTION_DOWN-->ACTION_MOVE-->ACTION-->...->ACTION_UP事件。

             上面的总结很简单,详细的分析以及说明都在《android事件拦截处理机制详解》这篇文章里,有兴趣的可以看一下。

             其实那篇博客说的有点简单了,只是涉及到View的层面而没有涉及到Activity和Window层面。本篇就在此基础上加上对事件源码的分析来进行补充说明。

            通过《