Android 多点触控

查看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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值