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

图解:Android事件分发机制

2016-12-8不详佚名
ent

返回true消费这次事件

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

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

图解:Android事件分发机制

9、我们在View的dispatchTouchEvent返回false并且ViewGroup 1的onTouchEvent返回true消费这次事件

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

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

图解:Android事件分发机制

10、我们在View的dispatchTouchEvent返回false并且在ViewGroup 2的onTouchEvent返回true消费这次事件

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

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

图解:Android事件分发机制

11、我们在ViewGroup2的dispatchTouchEvent返回false并且在ViewGroup1的onTouchEvent返回true消费这次事件

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

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

12、我们在ViewGroup2的onInterceptTouchEvent返回true拦截此次事件并且在ViewGroup 1的onTouchEvent返回true消费这次事件。

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

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

图解:Android事件分发机制

一下子画了好多图,还有好几种情况就不再画了,相信你也看出规律了,对于在onTouchEvent消费事件的情况:在哪个View的onTouchEvent返回true,那么ACTION_MOVE和ACTION_UP的事件从上往下传到这个View后就不再往下传递了,而直接传给自己的onTouchEvent并结束本次事件传递过程。

对于ACTION_MOVE、ACTION_UP总结:ACTION_DOWN事件在哪个控件消费了(return true),那么ACTION_MOVE和ACTION_UP就会从上往下(通过dispatchTouchEvent)做事件分发往下传,就只会传到这个控件,不会继续往下传,如果ACTION_DOWN事件是在dispatchTouchEvent消费,那么事件到此为止停止传递,如果ACTION_DOWN事件是在onTouchEvent消费的,那么会把ACTION_MOVE或ACTION_UP事件传给该控件的onTouchEvent处理并结束传递。

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

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