Android事件分发机制

事件分发.png

看了网上很多博客,还是无法理解安卓分发机制。所以自己上。
上图是总的分发流程示意图,下面做一下说明。
1.ACTION_DOWN事件传递的回路是这样的:
Activity.dispatchTouchEvent—>ViewGoup.dispatchTouchEvent
—>ViewGroup.onInterceptTouchEvent—>View.dispatchTouchEvent
—>View.onTouchEvent—>ViewGroup.onTouchEvent—>Activity.onTouchEvent
2.在此回路中,任何onTouchEvent返回true,则表示事件消费,之后的路线不再走
3.如果ViewGroup.onInterceptTouchEvent返回true,表示该ViewGroup需要拦截该事件,事件不会往子View传递。回路变成:Activity.dispatchTouchEvent
—>ViewGoup.dispatchTouchEvent—>ViewGroup.onInterceptTouchEvent
—>ViewGroup.onTouchEvent—>Activity.onTouchEvent
同样,若onTouchEvent返回true,结束该流程
4.若ViewGroup.onTouchEvent或View.onTouchEvent的ACTION_DOWN没有返回true,则之后ACTION_UP和ACTION_MOVE将不传入。
5.ViewGroup与View的dispatchTouchEvent方法若返回true,则表示消费,直接终止回路。若返回false,则直接跳到上一级的onTouchEvent,跳过中间回路部分。
即如果View.dispatchTouchEvent返回false,则回路是Activity.dispatchTouchEvent—>ViewGoup.dispatchTouchEvent
—>ViewGroup.onInterceptTouchEvent—>View.dispatchTouchEvent
—>ViewGroup.onTouchEvent—>Activity.onTouchEvent
如果ViewGroup.dispatchTouchEvent返回false,则回路是Activity.dispatchTouchEvent—>ViewGoup.dispatchTouchEvent
—>ViewGroup.onInterceptTouchEvent—>View.dispatchTouchEvent
—>Activity.onTouchEvent

如果有说的不对,欢迎大神指正

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容