标签:count 位置 describe 包括 flags 指定 and 复杂 最简
二、MotionEvent简介
在讲Android事件分发机制前,先简单了解一些MotionEvent,因为它就是这个“事件”。以下截取了部分源码中的描述:
1 ...... 2 * <p> 3 * Motion events describe movements in terms of an action code and a set of axis values. 4 * The action code specifies the state change that occurred such as a pointer going 5 * down or up. The axis values describe the position and other movement properties. 6 * </p> 7 ...... 8 public final class MotionEvent extends InputEvent implements Parcelable { 9 public static final int ACTION_DOWN = 0; 10 public static final int ACTION_UP = 1; 11 public static final int ACTION_MOVE = 2; 12 ...... 13 }
MotionEvent,顾名思义,动作事件的意思。它通过一个action码和一套坐标值来描述动作。action码指定了当如指针按下或者抬起等事件发生时的状态改变,坐标值则描述了事件在屏幕中的位置和其它动作属性值。如下内容为MotionEvent的toString方法打印出来的结果:
MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=173.0, y[0]=138.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x2, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=34268429, downTime=34268429, deviceId=8, source=0x1002 }
从这里可以看到,事件发生的action,时间,坐标等很多信息。本文中暂时只关注aciton这个字段,“action=ACTION_DOWN”表示了按下事件。
平时触摸屏幕时,一个最简单的事件包括了“ACTION_DOWN”和“ACTION_UP”,“ACTION_DOWN”表示手指按下,而““ACTION_UP”表示手指抬起来,这两个action才构成了一个完整的事件。如果手指在屏幕上有移动,还会包含“ACTION_MOVE”,此时一个完整的事件就包括“ACTION_DOWN”,多个“ACTION_MOVE”,“ACTION_UP”。当然,实际工作中会有很多复杂的情况出现,可能会出现一些其它的aciton,本文为了演示的方便,只考虑“ACTION_DOWN”和“ACTION_UP”的场景。
标签:count 位置 describe 包括 flags 指定 and 复杂 最简
原文地址:https://www.cnblogs.com/andy-songwei/p/10987684.html