Android事件分发机制源码解析
当手指触摸屏幕的时候,系统就会接收到触摸事件,经过一些列调用以后最终触摸事件会被消费掉。 Motion Event 从触摸屏到应用程序的每个触摸动作都会包装成 MotionEvent 。 MotionEvent 提供了每个触摸事件的信息:触摸动作和相关的元数据(触摸位置,触摸点的手指数以及触摸事件时间)。 MotionEvent 根据动作代码和一组坐标轴的值来描述动作。动作代码指定发生的状态更改,比如手指按下或抬起。坐标轴值描述了位置和其他动作属性。 Pointers 多点触控屏幕会为每一个手指发出一个动作跟踪。产生动作的每个手指或其他对象(鼠标,触摸笔,轨迹球)称为指针。MotionEvent包含了当前处于活动状态的所有指针的信息,即使自上一个事件传递以来其中一些指针未移动也是如此。当用手指触摸屏幕的特定点时,生成的信息由X,Y坐标以及其他信息(如索引,ID等)组成。由于Android支持多点触控,因此指针用于标识在同一时间产生动作的所有对象。 ACTIONS 动作类型及其名称表示作用。可用的动作有: ACTION_DOWN :对象(鼠标,触摸笔,轨迹球)或手指与屏幕接触的第一个点。当手指触摸到屏幕时,触发ACTION_DOWN事件 ACTION_UP :对象(鼠标,触摸笔,轨迹球)或手指释放屏幕的点。当手指从屏幕上拿开时,触发ACTION_UP事件 ACTION_MOVE