感兴趣了
.
那么后续事件就会直接给此方法对应的 ViewGroup 的 onTouchEvent 方法来处理事件了.
(3) 如果此方法一开始返回 false,说不感兴趣这个时候事件发给了目录 View.
现在又返回 true,说感兴趣了.那么目录 View 就会收到一个 action 为 ACTION_CANCEL
的事件
.
跟此方法返回 true 时的事件是同一个事件 ,只是 action 变了.
(4) ViewGroup 会在这里接收触控开始的事件.
规则就是上面这些
,那么是谁在后面处理这些规则呢?
就是
ViewGroup.它在 disptachTouchEvent 方法中,进行了一系列的处理来实现这种模型.
public boolean dispatchTouchEvent(MotionEvent ev)
对于单独的 View 本身来说,它也有一个简单的事件派发模型.通过以下代码就可以很
明白的看出来了
:
View#dispatchTouchEvent(MotionEvent event):
?
1
2
3
4
5
6
7
8
9
ListenerInfo li = mListenerInfo;
if
(li !=
null
&& li.mOnTouchListener !=
null
&& (mViewFlags & ENABLED_MASK) ==
ENABLED
&& li.mOnTouchListener.onTouch(
this
, event)) {
return
true
;
}
if
(onTouchEvent(event)) {
return
true
;
}
二: Activity 与 View 的事件模型
事件先到 Activity 中,然后 Activity 调用:
?