Android 事件分发机制

事件分发我们首先要了解什么是事件分发:

事件分发是我们在操作屏幕点击,滑动,抬起时需要的一种机制,一般来说是在线程中进行


首先当我们触摸屏幕的时候,会首先执行Activity的dispatchTouchEvent 这一步不管返回是true或false

都会执行当前的方法

我们继续往下走会执行ViewGroup的dispatchTouchEvent 当这个方法为true的时候我们会执行当前的方法,当这个方法为false的时候我们会返回到Activity的onToouchEvent

我们继续往下,会执行到ViewGroup的onInterceptTouchEvenet 当这个方法为true的时候我们会执行ViewGroup的onTouchEvent 如果为false的话才会继续向下执行,如图所示

onTouch和onTouchEvent有什么区别,又该如何使用?

从源码中可以看出,这两个方法都是在View的dispatchTouchEvent中调用的,onTouch优先于onTouchEvent执行。如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行。

什么是ViewGroup?它和普通的View有什么区别?

顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子VewGroup,是Android中所有布局的父类或间接父类,像LinearLayout、RelativeLayout等都是继承自ViewGroup的。但ViewGroup实际上也是一个View,只不过比起View,它多了可以包含子View和定义布局参数的功能。ViewGroup继承结构示意图如下所示:


可以看到,我们平时项目里经常用到的各种布局,全都属于ViewGroup的子类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。