多点触控:当手指触摸屏幕用一根手指触摸已经
问题描述:
我试图让一些地方做了捏旋转的图像,使用下面的代码检测:多点触控:当手指触摸屏幕用一根手指触摸已经
public boolean onTouchEvent(MotionEvent e) {
if(e.getPointerCount() > 1) {
if (e.getActionMasked()== MotionEvent.ACTION_MOVE) {
previousX1 = curX1;
previousY1 = curY1;
currentX1 = e.getX(1);
currentY1 = e.getY(1);
previousX0 = curX0;
previousY0 = curY0;
currentX0 = e.getX(0);
currentY0 = e.getY(0);
double prevDist = Math.hypot(prevX1 - prevX2, prevY1 - prevY2);
double dist = Math.hypot(curX1 - curX2, curY1 - curY2);
angle += ((dist - prevDist) * 0.01);
}
}
return true;
}
现在,这个工作正常大多数情况下,除了我希望在捏开始时立即更新当前X1,当前X2等值,即第一手指已经在第二手指触摸(或抬起)屏幕的MotionEvent时压下。但是,Android API相当混乱,我无法弄清楚如何检测这种情况。使用(e.getActionMasked() == MotionEvent.ACTION_DOWN)
或(e.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)
作为条件似乎不起作用。
非常感谢帮助。谢谢!
答
如果你想只两个手指在屏幕上进行测试,您可以使用此:
@Override
public boolean onTouch(final View view, MotionEvent event) {
final int action = event.getAction();
float xPosition = 0;
float yPosition = 0;
switch (action){
case MotionEvent.ACTION_DOWN :
xPosition = event.getX();
yPosition = event.getY();
break;
case MotionEvent.ACTION_POINTER_2_DOWN :
xPosition = event.getX(1);
yPosition = event.getY(1);
break;
default:
break;
}
}
但不ACTION_POINTER_2_DOWN过时?有没有更好的方式来做到这一点? –