1、
2、dispatch处理事件的第一步,主要进行了一些清理和还原的一些操作。
ACTION_DOWN是一系列touch事件的开端,比如说会清楚以前的touch状态,并且开始新的手势。
cancelAndClearTouchTargets会将myFirstTouchTarget置为空
3、是否拦截
mFirstTouchTarget为空,说明viewgourp自己消费了touch事件,或者说viewgourp没有拦截,但是ziview没有消费掉touch事件。
不为空说明需要viewgroup自己来处理touch事件,如果不为空,说明viewgroup没有拦截tuch事件并找到了处理touch事件的子view
disallowIntercept:禁止拦截
是否取消action
如果没有被取消,并且没有被拦截
寻找一个子view来消费或者处理事件
会依据一个坐标来寻找一个子view来接收touch事件
如果查找到一个子view,就将事件分发给它
为mFirstTouchTarget对象赋值,此时该对象就不再为空了
如果经过一系列的处理,mFirstTouchEventTarget仍然为空,则继续处理分发事件
如果不为空,则进行下面的处理
状态的清理还原
4、禁止viewgroup的拦截touch事件
disallowIntercept为false,表示允许拦截
当action为move、up并且mFirstTouchTarget为空的时候,就直接将intercepted置为true。mFirstTouchTarget为空viewgroup的子view没有消费touch事件。既然没有子view能消费touch事件,后面的move、up就直接拦截下来,没有必要去分发了。
5、onInterceptTouchEvent默认返回false
注:参考资料:
http://blog.csdn.net/lfdfhl/article/list/5