次のコードを使用して、ピンチを行うと画像が回転するようなものを作成しようとしています。
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)
またはを条件として使用する(e.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)
と、機能しないようです。
ヘルプは大歓迎です。ありがとう!