0

次のコードを使用して、ピンチを行うと画像が回転するようなものを作成しようとしています。

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)と、機能しないようです。

ヘルプは大歓迎です。ありがとう!

4

1 に答える 1

0

画面上で2本の指だけでテストする場合は、次を使用できます。

 @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;
                    }
}
于 2012-08-23T08:13:23.397 に答える