View的事件派发补充

来源:互联网 发布:windows找不到cmd.exe 编辑:程序博客网 时间:2024/05/16 07:07

事件派发,层级
每一层只需要关心自己的直接子View是否处理事件就可以了

事件的派发链是如何形成的
事件的派发链是在actionDown的时候形成的
mFirstTouchTarget当前ViewGroup的直接子View是事件派发链的一环

首先关注onInterceptTouchEvent在什么情况下被调用
2108:onInterceptTouchEvent()
actionMasked == MotionEvent.ACTION_DOWN
mFirstTouchTarget != null
!disallowIntercept
然后onInterceptTouchEvent在返回true时有什么作用
如果没有子节点对这个事件有兴趣
调用当前viewgroup的事件处理
如果之前有子节点对这个事件有兴趣
2252:cancelChild = true
给子View发一个cancel事件
mFirstTouchTarget置空
下一个事件(Move或up),会直接给当前ViewGroup处理