您的位置:首页 > 移动开发 > Android开发

Android 多点触控

2016-04-21 10:24 513 查看
查看MotionEvent源代码:

public static final int ACTION_DOWN = 0;

public static final int ACTION_UP = 1;

public static final int ACTION_MOVE = 2;

public static final int ACTION_CANCEL = 3;

public static final int ACTION_OUTSIDE = 4;

public static final int ACTION_POINTER_DOWN = 5;

public static final int ACTION_POINTER_UP = 6;

public static final int ACTION_HOVER_MOVE = 7;

public static final int ACTION_SCROLL = 8;

public static final int ACTION_HOVER_ENTER = 9;

public static final int ACTION_HOVER_EXIT = 10;

由以上看出动作变量为action的低8位信息。

public static final int ACTION_POINTER_INDEX_MASK = 0xff00;

public static final int ACTION_POINTER_INDEX_SHIFT = 8;

public static final int ACTION_POINTER_1_DOWN   = ACTION_POINTER_DOWN | 0x0000;

public static final int ACTION_POINTER_2_DOWN   = ACTION_POINTER_DOWN | 0x0100;

public static final int ACTION_POINTER_3_DOWN   = ACTION_POINTER_DOWN | 0x0200;

public static final int ACTION_POINTER_1_UP     = ACTION_POINTER_UP | 0x0000;

public static final int ACTION_POINTER_2_UP     = ACTION_POINTER_UP | 0x0100;

@Deprecated
public static final int ACTION_POINTER_3_UP     = ACTION_POINTER_UP | 0x0200;

@Deprecated
public static final int ACTION_POINTER_ID_MASK  = 0xff00;

@Deprecated
public static final int ACTION_POINTER_ID_SHIFT = 8;


有以上可以看出使用

int action = event.getAction(); 单点触控时有效

int action1 = event.getActionMasked(); 两者的区别。只有使用后者才能在多点触控时也获取到正确的状态。

int index = event.getActionIndex(); 获取到当前的触控id

public final int getActionIndex() {
return (nativeGetAction(mNativePtr) & ACTION_POINTER_INDEX_MASK)
>> ACTION_POINTER_INDEX_SHIFT;
}


int id=event.getPointerId(1);

int activeId=event.findPointerIndex(id);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: