[关闭]
@linux1s1s 2019-02-14T22:59:38.000000Z 字数 596 阅读 2113

Android ViewGroup 事件分发

AndroidView 2015-06


在了解ViewGroup事件分发之前,请先阅读关联博客Android View 事件分发

对于ViewGroup的事件分发和View的事件分发是一致的,所以我们先来看看ViewGroup这个类的分发事件方法:

此处输入图片的描述

onInterceptTouchEvent

这里首先执行的就是 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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注