android 的事件传递

android 的事件传递,一直是我比较头疼的问题,今天好好理一下
先看图片


未命名.png

基本结构,可以看Activity 下面的那个图,Activity中ViewGroup包含有View。
第一个先来看Activity:如果在Activity中返回的dispatchEvent(MotionEvent ev) 的方法中,返回true 和 false ,
事件都是不会往下继续传递的了,也就是自己消费了该事件。
如果返回super.dispatchEvent(MotionEvent ev),则会继续传递给ViewGroup,一般情况下,如果要自定义View包括ViewGroup,都不会在Activity层重写dispatchEvent(MotionEvent ev)方法,使用默认的即可

第二是ViewGroup :当事件传递到ViewGroup时,会先走事件拦截方法也就是onInterceptTouch(MotionEvent ev),也是重写步骤中很关键的方法。如果返回true ,则自己消费了该事件,不会继续传递,则其他的子View 不会再接收到事件消息,如果返回false 或是默认的super.onInterceptTouch(MotionEvent ev)则是会继续传递给子view的。

接下来就是View ,view 主要看的onTouchEvent(MotionEvent ev),如果返回true ,则会自己消费该事件,不会向上继续传递了

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

相关阅读更多精彩内容

友情链接更多精彩内容