2013-12-18 20 views
1

我正在使用一個小方塊RelativeLayout作爲相鄰GLSurfaceView中移動的遊戲手柄。只要視圖被按下,你如何使onTouchListener繼續前進?

我設定,讓在的onTouch方法RelativeLayoutonTouchListenner我調用內置到一個更新的翻譯和我的畫旋轉座標GLSurfaceView的方法。

我有一切工作正常,除了觸摸事件只有當用戶在RelativeLayout上移動他或她的手指時觸發的事實。

我想它覺得自己像一個操縱桿一點點:如果你離開你的手指按在RelativeLayout的頂部,那麼你會繼續下去,「向上」(以上編程:在被送往event.getX()event.getY()那最後應該得到循環,或重新發送,在GLSurfaceView直到用戶移動他的手指RelativeLayout內,或完全停止觸摸RelativeLayout

我應該用什麼來檢測RelativeLayout與否,目前正在感動(即使在所述觸摸中沒有動作)?

謝謝!

回答

0

您可能可以使用onTouch()方法的MotionEvent參數的event.getAction()方法。您可以檢查它是否是MotionEvent.ACTION_DOWN或MotionEvent.ACTION_UP。

if (event.getAction() == MotionEvent.ACTION_DOWN) { 
    //start something 
} 
else if (event.getAction() == MotionEvent.ACTION_UP) { 
    //stop something 
} 

我的想法是,你也許可以啓動或停止以這種方式線程,但無論哪種方式,這可能至少給你當用戶實際按下和擡起他/她的手指一些更多的信息。

1

所以這是我想出了幾乎同時與csmcklvey

  if(event.getAction()==MotionEvent.ACTION_UP) 
       gM.isTouchedL = false; 
      else 
       gM.isTouchedL = true; 
      return true; 

哪裏.isTouchedL是「控制布爾」我在GLSurfaceView

用綠色點亮,華潤上華的回答反正! :)

+0

感謝信用! – csmckelvey

1

我在我的一個應用程序中使用了旋轉動畫,它使用了onTouchEven視圖。主要功能已在事件「ACTION_MOVE」中執行。它會幫助你,通過。

public boolean onTouch(View v, MotionEvent event) 
{ 

    final float xc = volumeButton.getWidth()/2; 
    final float yc = volumeButton.getHeight()/2; 
    final float x = event.getX(); 
    final float y = event.getY(); 
    switch (event.getAction()) 
    { 
    case MotionEvent.ACTION_DOWN: 
    { 
//  volumeButton.clearAnimation(); 
//  mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y)); 
     break; 
    } 
    case MotionEvent.ACTION_MOVE: 
    { 
     mPrevAngle = mCurrAngle; 
     mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y)); 
     animate(mPrevAngle, mCurrAngle, 100); 
     break; 
    } 
    case MotionEvent.ACTION_UP : 
    { 
     mPrevAngle = mCurrAngle = 0; 
     break; 
    } 
    } 
    return true; 

} 
相關問題