Android事件分发机制理解与描述的第一篇,主要是先介绍事件分发机制的概念
Android事件分发机制(一)
本篇是个人对Android事件分发机制理解与描述的第一篇,主要是先介绍事件分发机制的概念
意义
任何对手机屏幕的操作都离不开事件分发机制,清楚事件分发机制可以更好的去实现复杂交互
事件分发机制用来解决的问题都是在Android控件之间传递用户对屏幕的操作,如滑动等
事件
在Android中,系统不会将用户操作这一整个操作都传递下来,而是会分成多个事件一个一个下发
系统会把用户的操作分解成一系列的事件, 然后逐个传递这些事件. 事件可以看作是用户操作过程的节点, 每次分发只会分发一个事件.
比如说,用户滑动了一下屏幕,那么系统将会传递-手指接触屏幕 –> 移动手指(或者多个) –> 手指离开屏幕. Android事件分发机制所传递的就是这些分解之后的事件(手指接触屏幕, 移动手指, 手指离开屏幕).
在Android这些操作都是用MotionEvent类来代表。大部分事件分发机制中涉及的方法里面都包含一个MotionEvent实例,下面将介绍一下MotionEvent有那些类型
ACTION_DOWN:代表着手指首次接触屏幕,是所有操作的第一步,也就是说在传递事件的过程中,所以事件分发的第一个事件总是ACTION_DOWNACTION_MOVE:代表着手指在屏幕上移动,主要是用来区分点击还是滑动ACTION_UP:代表着手指从屏幕上移开,是所有操作的最后一步,也就是是在事件传递中,所以事件序列里面最后一个事件分发的总是ACTION_UPACTION_CANCEL:代表着事件传递被中断,也就是说事件被消费了,消费概念将在下面介绍ACTION_POINTER_DOWN:代表着又有新的手指接触屏幕ACTION_POINTER_UP:代表又有别的手指离开屏幕
消费
在Android中事件是层层传递的,先传给最上方的控件,在由最上方的控件决定要不要使用掉这个事件(也就是销毁掉事件,自己来处理)来是否继续传递事件。消费的意思是指被控件消耗掉了。
分发
事件分发机制的目的是在控件间传递事件, 那么分发的对象自然是控件了
控件即是分发者也是分发对象.