我正在尝试使用以下代码进行捏合旋转图像的操作:
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;
}
现在,这在大多数情况下都可以正常工作,除了我想在捏合开始时立即更新 currentX1、currentX2 等值,即第二根手指触摸(或抬起)屏幕的 MotionEvent而第一根手指已经被按住。但是,Android API 相当混乱,我不知道如何检测何时发生这种情况。使用(e.getActionMasked() == MotionEvent.ACTION_DOWN)
or(e.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)
作为条件似乎不起作用。
非常感谢您的帮助。谢谢!