android事件分发dispatchTouchEvent
2015-02-01 23:20:43 4 举报
android事件分发dispatchTouchEvent
作者其他创作
大纲/内容
ViewGroup.dispatchTouchEvent
true
view.onTouchEvent
false
View
dispatchTouchEvent
ACTION_DOWN || ACTION_POINTER_DOWN ||ACTION_HOVER_MOVE
intercepted = onInterceptTouchEvent(ev)
结束
!canceled && !intercepted
end
ACTION_DOWN || mFirstTouchTarget != null
ViewGroup
mFirstTouchTarget.dispatchTouchEvent
mFirstTouchTarget是否已经处理过该事件
view.dispatchTouchEvent
mOnTouchListener != null &&mViewFlags == ENABLED &&mOnTouchListener.onTouch
super.dispatchTouchEvent(event)
1、如果ViewGroup找到了能够处理该事件的View,则直接交给子View处理,自己的onTouchEvent不会被触发;2、可以通过复写onInterceptTouchEvent(ev)方法,拦截子View的事件(即return true),把事件交给自己处理,则会执行自己对应的onTouchEvent方法3、子View可以通过调用getParent().requestDisallowInterceptTouchEvent(true); 阻止ViewGroup对其MOVE或者UP事件进行拦截;
intercepted = true
mFirstTouchTarget == null
0 条评论
回复 删除
下一页