getActionMasked()
多点触控时使用getActionMasked()取代getAction()来获取事件类型
Pointer
一个pointer就代表一个触摸点。一个MotionEvent对象中可能存储多个pointer的相关信息,每个pointer都有自己的id和index,id在整个事件流中是不会发生变化的,但是index会发生变化
- PointerId
每根手指从按下、移动到离开屏幕,每个手指都会拥有一个固定PointerId的值
- PointerIndex
每根手指从按下、移动到离开屏幕,每根手指在每一个事件的Index可能是不固定的
- PointerId和PointIndex的例子
| 事件 | PointerId | PointerIndex |
|---|---|---|
| 依次按下三根手指 | 三根手指的id依次为0、1、2 | 三根手指的index依次为0、1、2 |
| 抬起第二根手指 | 第一根手指的id为0,第三根手指的id为2 | 第一根手指的index为0,第三根手指的index变为1 |
| 抬起第一根手指 | 第三根手指的id为2 | 第三根手指的index变为0 |
相关事件
| 事件 | 简介 |
|---|---|
| ACTION_DOWN | 第一个手指初次接触到屏幕时触发 |
| ACTION_MOVE | 手指在屏幕上滑动时触发,会多次触发 |
| ACTION_UP | 最后一个手指离开屏幕时触发 |
| ACTION_POINTER_DOWN | 有非主要的手指按下(即按下之前已经有手指在屏幕上) |
| ACTION_POINTER_UP | 有非主要的手指抬起(即抬起之后仍然有手指在屏幕上) |
相关方法
| 方法 | 简介 |
|---|---|
| getActionMasked() | 在多点触控中取代getAction() |
| getPointerCount() | 获取在屏幕上手指的个数 |
| getX(int pointerIndex) | 获取某一个指针(手指)的X坐标 |
| getY(int pointerIndex) | 获取某一个指针(手指)的Y坐标 |
| getActionIndex() | 获取该事件对应的PointerIndex |
| findPointerIndex(int pointerId) | 通过PointerId获取到当前状态下PointIndex |
| getPointerId(int pointerIndex) | 获取一个指针的PointerId,在手指按下和抬起之间ID始终不变 |