图解Android事件传递之ViewGroup篇

举报
程序员历小冰 发表于 2021/08/27 23:05:35 2021/08/27
【摘要】  本篇文章主要讲述ViewGroup中关于触摸事件传递的相关逻辑。主要梳理一下dispatchTouchEvent函数。 一些知识点 FLAG_DISALLOW_INTERCEPT,可以使用reque...

 本篇文章主要讲述ViewGroup中关于触摸事件传递的相关逻辑。主要梳理一下dispatchTouchEvent函数。

一些知识点

  • FLAG_DISALLOW_INTERCEPT,可以使用requestDisallowInterceptTouchEvent来设置ViewGroup的这个标记位,让ViewGroup不拦截事件。
  • ViewGroup只会将触摸事件转发给那些可见并且触摸事件发生在其可视范围内的子View
  • 如果一个子View没有接收ACTION_DOWN事件,那么这个事件系列的ACTION_MOVE或者ACTION_UP事件根本不会传递给它
  • 关于ViewGroup拦截与否消费与否的判断,只要记住一点就可以轻易判断:1 ViewGroup是否最终没有消费触摸事件(无论是自己自己消费,还是分发给子view消费),决定之后的触摸事件是否会再转发给它。

dispatchTouchEvent的主流程

dispatchTouchEvent中遍历child分发事件的逻辑

转换触摸事件并分发的过程-dispatchTransformedTouchEvent
更详细的源代码请查看我的github

文章来源: blog.csdn.net,作者:程序员历小冰,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/u012422440/article/details/50651601

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。