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