Android Touch事件分发机制

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

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



View和ViewGroup的关系图如下:

 

主要有三点:

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

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

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


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


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。