dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent的简单理解

view点击事件的分发处理网上已经很多分析的文章了,但描述的不够简洁,用log形式把这个过程描述一下,又由于情况较多,看的让人一头雾水,我这边说说我的简单理解(通过打印log的方式得到的结论,log过程省略)

ViewGroup中三个方法的执行顺序为dispatchTouchEvent->onInterceptTouchEvent->onTouchEvent

dispatchTouchEvent 就是用来阻断自身以及子view的touch事件的,返回true的时候,ViewGroup本身的onTouchEvent和子view的onTouchEvent都不会调用。

onInterceptTouchEvent这个方法只有ViewGroup才有,是用来阻断子view的,也就是说,如果onInterceptTouchEvent返回值为true,ViewGroup本身的onTouchEvent还是会调用,但子view的dispatchTouchEvent等方法都没有调用

onTouchEvent在ACTION_DOWN和ACTION_UP的时候如果简单的返回true或者false,view本身的Click事件不会调用,看源码可知,ACTION_DOWN和ACTION_UP的时候会处理onClick和onLongclick的事件,所以想要View继续响应Click事件的话,需要在ACTION_DOWN和ACTION_UP时调用super.onTouchEvent(event)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容