安卓事件机制
安卓事件机制
ViewGroup的三个函数:
dispatchTouchEvent
onInterceptTouchEvent
onTouchEvent
View的两个函数:
dispatchTouchEvent
onTouchEvent
事件传递:
如果一个事件传给了一个 View/ViewGroup 则会调用他的
dispatchTouchEvent
如果 此时dispatchTouchEvent 返回false
表明 这个View/ViewGroup 不想处理这个事件 这个事件跟它以及它的children没有关系
然后事件就找 下一个View/ViewGroup 重复上述过程
如果 此时dispatchTouchEvent 返回true
表明 这个View/ViewGroup 想处理这个事件
那么 这个View/ViewGroup的以下函数会被调用:
onInterceptTouchEvent (只有ViewGroup会调用 因为View没有children)
onTouchEvent
如果 onInterceptTouchEvent 返回了false 则事件还会往ViewGroup的children传递
调用children的dispatchTouchEvent这里就不重复说了 就是上面提到过的过程
如果 onInterceptTouchEvent 返回了ture 则不会往ViewGroup的children传递
当我们重写一个类的dispatchTouchEvent
要记得调用super.dispatchTouchEvent(ev)
浙公网安备 33010602011771号