Android Touch事件分发机制

        在app开发过程中常常需要订制控件处理Touch事件。本文介绍Android应用层是分发Touch事件的机制。

        整体来说Touch事件的分发遵从“V”字形结构,如下图所示(图有点粗糙:-D)Android Touch事件分发机制  :

Android Touch事件分发机制


View和ViewGroup的关系图如下:

 Android Touch事件分发机制

主要有三点:

1、外层的ViewGroup先接收到事件,ViewGroup在dispatch中调用intercept决定分发方向:如果intercept返回true,则向内层控件分发;反之,直接分发到自己的touch函数。

2、touch函数的返回值决定事件是否继续传递:返回true,则表示消费了,不在将该事件往后传递;反之则将该事件继续往后传递。

3、一次事件的最终返回值决定后续事件是否被接收:如果Activity和所有控件的touch函数都没有消费该事件(touch返回true),则后续事件不再被接收;反之,则继续接收后续事件。


“V"字形的左边是dispatch函数,下方拐点是内层View的touch函数,右边是外层View的touch函数。当然,最内层是个ViewGroup也是可以的。


Android Touch事件分发机制

上一篇:Illustrator(AI)设计制作具有矢量效果的逼真立体烟灰缸实例教程


下一篇:android游戏开发——简单的例子(笑脸)