2013-04-03 20 views
0

我想要獲得用戶按下屏幕(ACTION_DOWN)的位置和釋放它的位置(ACTION_UP)之間的距離。這是爲了能夠將位圖圖像移動到相同的量(即使它被推離屏幕),而不會使其跳回到光標位置(或返回到屏幕上)。但是,我的代碼似乎有時會將圖像向錯誤的方向移動,或者即使在我釋放屏幕按下時也會導致它繼續移動。這裏是否有一個反彈問題,我需要考慮?獲取android ACTION_DOWN和ACTION_UP事件之間的距離

我onTouch方法(GET ACTION_DOWN點和ACTION_UP點,並減去一個從其他)

public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 
    if(action == event.ACTION_DOWN) { 
    preFingerPosX = event.getX(); 
     preFingerPosY = event.getY(); 
    } 
    else if(action == event.ACTION_UP) { 
     fingerPosX = event.getX(); 
     fingerPosY = event.getY(); 
    } 
    dx = fingerPosX - preFingerPosX; 
    dy = fingerPosY - preFingerPosY; 
    bmpX += dx; 
    bmpY += dy; 

    //invalidate();   
    return true; 
} 

我的run()方法

public void run() { 
     // TODO Auto-generated method stub 
     while(isRunning) { 
      if(!surfaceHolder.getSurface().isValid()) { 
       continue; 
      } 


      canvas = surfaceHolder.lockCanvas(); 

      canvas.drawRGB(0, 0, 0); 
      canvas.drawBitmap(bmp, bmpX-(bmp.getWidth()/2), 
             bmpY-(bmp.getHeight()/2), null); 
      surfaceHolder.unlockCanvasAndPost(canvas); 

     } 
} 

感謝

回答

1

在你onTouch()處理程序,您仍在執行此位:

dx = fingerPosX - preFingerPosX; 
dy = fingerPosY - preFingerPosY; 
bmpX += dx; 
bmpY += dy; 

即使事件不是ACTION_DOWN或ACTION_UP。

因此,bmpXbmpY正在遞增/ dx/dy潛在數百次的ACTION_DOWNACTION_UP之間,由於(可能幾百個)ACTION_DOWN事件(以及可能的其它事件來說),該間發生遞減初始下降和最終的事件。另外,通常您會希望您的對象在手勢過程中實際跟蹤手指進程,因此您可能希望爲ACTION_DOWN設置特定的處理程序。

+0

啊是的!當其他人查看我一直在尋找的代碼時,它總是有幫助的。答案接受了,謝謝! – logicalfox

+0

很高興幫助。請用綠色勾號標記來實際接受答案。 Trev – Trevor

+0

是的,我會等待8分鐘,然後我可以點擊accept tho ...不知道爲什麼 – logicalfox