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)or(e.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)作为条件似乎不起作用。

非常感谢您的帮助。谢谢!

4

1 回答 1

0

如果你只想用两个手指在屏幕上进行测试,你可以使用这个:

 @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 回答