view事件传递

1,view事件的传递图解

View的dispatchTouchEvent

dispatchTouchEvent

View的onTouchEvent

OnTouchEvent1

OnTouchEvent2

2,viewgroup事件传递

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

dispatchTouchEvent的主流程

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

转换触摸事件并分发的过程-dispatchTransformedTouchEvent 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值