2012-08-23 138 views
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; 
} 

现在,这个工作正常大多数情况下,除了我希望在捏开始时立即更新当前X1,当前X2等值,即第一手指已经在第二手指触摸(或抬起)屏幕的MotionEvent时压下。但是,Android API相当混乱,我无法弄清楚如何检测这种情况。使用(e.getActionMasked() == MotionEvent.ACTION_DOWN)(e.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN)作为条件似乎不起作用。

非常感谢帮助。谢谢!

回答

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; 
        } 
} 
+0

但不ACTION_POINTER_2_DOWN过时?有没有更好的方式来做到这一点? –