2012-08-23 141 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過時?有沒有更好的方式來做到這一點? –