相关文件 |
---|
./frameworks/base/core/java/android/view/View.java |
./frameworks/base/core/java/android/view/ViewGroup.java |
流程简介:
首先:
ViewGroup调用dispatchTouchEvent开始分发消息;
其次:
-
如果是MotionEvent.ACTION_DOWN或存在mFirstTouchTarget,需要判断是否拦截消息onInterceptTouchEvent
-
1.如果拦截消息:
/有mFirstTouchTarget,改为MotionEvent.ACTION_CANCEL,发送终止消息给child处理
–
\没有mFirstTouchTarget,调用super.dispatchTouchEvent自己处理(在dispatchTransformedTouchEvent中传空参数),调用onTouchEvent -
2.如果没有拦截:
分发给child处理:
/如果child处理了,设置mFirstTouchTarget,自身不再调用onTouchEvent处理
–
\如果child没有处理,mFirstTouchTarget为空,调用super.dispatchTouchEvent自己处理(在dispatchTransformedTouchEvent中传空参数),调用onTouchEvent
如果既不是MotionEvent.ACTION_DOWN,也不存在mFirstTouchTarget,则直接拦截消息,由分发者自己处理
函数
dispatchTouchEvent : 返回消息是否被处理