@linux1s1s
2019-02-14T14:59:38.000000Z
字数 596
阅读 2469
AndroidView 2015-06
在了解ViewGroup事件分发之前,请先阅读关联博客Android View 事件分发
对于ViewGroup的事件分发和View的事件分发是一致的,所以我们先来看看ViewGroup这个类的分发事件方法:

这里首先执行的就是 onInterceptTouchEvent(ev) 这个方法,负责拦截事件的发生,这个接口默认返回的是false,表示不拦截事件的传递:

如果onInterceptTouchEvent(ev)返回值为false,那么父View不会拦截事件,所有子View都会有机会执行dispatchTouchEvent(event),
这个就回到了View的dispatchTouchEvent(event)执行路径了
如果onInterceptTouchEvent(ev)返回值为true,那么父View拦截事件,所有子View都没有机会执行dispatchTouchEvent(event),也就不能执行onTouch方法和onToucheEvent方法了。
所以如果不拦截事件,那么又回到了View的事件分发,请直接阅读关联博客Android View 事件分发,这里不再赘述了。
如果想对事件分发机制更直观的理解,可以看一篇转载文章:
Android View事件分发测试Demo
