我正在研究一个多点触控程序,它只需要记录第二个手指或索引指针所做的动作。 现在文档说我们可以使用MotionEvent.ACTION_POINTER_INDEX_MASK和&它通过操作并通过INDEX_SHIFT移动以获得使操作像上升或下降的指针。但是这种技术在移动时不起作用。
无论如何我们可以单独检测某个指针所做的移动动作吗?
THX,
答案 0 :(得分:1)
是的,您可以在View
班级中找到类似的内容:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_MOVE:
if(event.getPointerCount()>1){
//where 1 is the index of the second finger
final int Y = event.getY(1);
final int X = event.getX(1);
}
break;
}
}
因此,根据您想要获取移动的手指,您可以设置获取该索引。 Rember该值可能是0(第一个指向下的指针)到getPointerCount()-1
。
我在2.2姜饼上测试了这个,所以我希望它对你有用:)
答案 1 :(得分:0)
您可以通过检查更改了哪个指针来获取有效指针索引:
private final int MAX_POINTER = 5; // 5 different touch pointers supported on most devices
private float mLastTouchPositionX[];
private float mLastTouchPositionY[];
@Override
public boolean onTouchEvent(MotionEvent aEvent)
int tActionIndex = aEvent.getActionIndex();
int tPointerCount = aEvent.getPointerCount();
/*
* Check which pointer changed on move
*/
if (tMaskedAction == MotionEvent.ACTION_MOVE) {
for (int i = 0; i < tPointerCount && i < MAX_POINTER; i++) {
if (mLastTouchPositionX[i] != aEvent.getX(i) || mLastTouchPositionY[i] != aEvent.getY(i)) {
mLastTouchPositionX[i] = aEvent.getX(i);
mLastTouchPositionY[i] = aEvent.getY(i);
// Found new action index
tActionIndex = i;
break;
}
}
}
...
}