ViewGroup事件分发
2016-07-18 21:38:02 0 举报
ViewGroup事件分发是Android系统中的一个重要机制,它负责处理和分发用户在屏幕上的触摸事件。当用户触摸屏幕时,事件首先被传递给最顶层的ViewGroup,然后由该ViewGroup根据事件的类型和位置,将事件分发给其内部的子View。这个过程会一直递归进行,直到找到能够处理该事件的View为止。在这个过程中,如果某个View不消费(即不处理)该事件,那么该事件就会被传递给它的父ViewGroup,由其父ViewGroup继续分发。这就是Android中的事件冒泡机制。通过这种方式,我们可以实现复杂的交互效果,如滑动菜单、列表等。
作者其他创作
大纲/内容
NO
YES
找到子View
ACTION_DOWN
dispatchTransformedTouchEvent
mFirstTouchTarget != null
actionMasked == MotionEvent.ACTION_DOWN || mFirstTouchTarget != null
mFirstTouchTarget 依旧为 null
拦截intercepted = true
disallowIntercept
dispatchTouchEvent
ViewGroup调用View的dispatchTouchEvent
不在处理
child调用dispatchTouchEvent
不拦截intercepted = true
cancelAndClearTouchTargets(ev); resetTouchState();
mFirstTouchTarget == null
child==null
根据坐标找到对应子View
intercepted
子View消费down事件
intercepted = onInterceptTouchEvent(ev)
0 条评论
下一页