天下网吧 >> 网吧系统 >> 系统动态 >> 正文

图解:Android事件分发机制

2016-12-8不详佚名

在这种场景下ACTION_MOVE和ACTION_UP将如何呢,看下面的打出来的日志

Activity | dispatchTouchEvent --> ACTION_MOVE

ViewGroup1 | dispatchTouchEvent --> ACTION_MOVE

----

TouchEventActivity | dispatchTouchEvent --> ACTION_UP

ViewGroup1 | dispatchTouchEvent --> ACTION_UP

----

下图中

红色的箭头代表ACTION_DOWN事件的流向

蓝色的箭头代表ACTION_MOVE和ACTION_UP事件的流向

图解:Android事件分发机制

Paste_Image.png

2、我们在ViewGroup2的dispatchTouchEvent返回true消费这次事件

Activity | dispatchTouchEvent --> ACTION_DOWN

ViewGroup1 | dispatchTouchEvent --> ACTION_DOWN

ViewGroup1 | onInterceptTouchEvent --> ACTION_DOWN

ViewGroup2 | dispatchTouchEvent --> ACTION_DOWN

---->消费

Activity | dispatchTouchEvent --> ACTION_MOVE

ViewGroup1 | dispatchTouchEvent --> ACTION_MOVE

ViewGroup1 | onInterceptTouchEvent --> ACTION_MOVE

ViewGroup2 | dispatchTouchEvent --> ACTION_MOVE

----

TouchEventActivity | dispatchTouchEvent --> ACTION_UP

ViewGroup1 | dispatchTouchEvent --> ACTION_UP

ViewGroup1 | onInterceptTouchEvent --> ACTION_UP

ViewGroup2 | dispatchTouchEvent --> ACTION_UP

----

红色的箭头代表ACTION_DOWN事件的流向

蓝色的箭头代表ACTION_MOVE和ACTION_UP事件的流向

图解:Android事件分发机制

Paste_Image.png

3、我们在View的dispatchTouchEvent返回true消费这次事件

这个我不就画图了,效果和在ViewGroup2的dispatchTouchEvent return true的差不多,同样的收到ACTION_DOWN的dispatchTouchEvent函数都能收到ACTION_MOVE和ACTION_UP。

所以我们就基本可以得出结论如果在某个控件的dispatchTouchEvent放回true消费终结事件,那么收到ACTION_DOWN的函数也能收到ACTION_MOVE和ACTION_UP。

4、我们在View的onTouchEvent返回true消费这次事件

红色的箭头代表ACTION_DOWN事件的流向

蓝色的箭头代表ACTION_MOVE和ACTION_UP事件的流向

图解:Android事件分发机制

5、我们在ViewGroup 2的onTouchEvent返回true消费这次事件

红色的箭头代表ACTION_DOWN事件的流向

蓝色的箭头代表ACTION_MOVE和ACTION_UP事件的流向

图解:Android事件分发机制

6、我们在ViewGroup 1的onTouchEvent返回true消费这次事件

红色的箭头代表ACTION_DOWN事件的流向

蓝色的箭头代表ACTION_MOVE和ACTION_UP事件的流向

图解:Android事件分发机制

Paste_Image.png

7、我们在Activity的onTouchEvent返回true消费这次事件

红色的箭头代表ACTION_DOWN事件的流向

蓝色的箭头代表ACTION_MOVE和ACTION_UP事件的流向

图解:Android事件分发机制

8、我们在View的dispatchTouchEvent返回false并且Activity的onTouchEv

本文来源:不详 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下