2013-05-21 95 views
0

我不知道是否可以使用下面的onTouch方法來檢測用戶是否將手指向左,右,向上移動到屏幕上。我有一個帶有對象的網格,我只希望用戶能夠在四個方向上移動這個對象中的一個。如何檢測左側,右側,上下的移動

我的想法是使用Action_Down事件來獲取X和Y位置,然後檢查列表中的所有對象以查看哪個對象是白色的X和Y值。然後通過使用Action_Move開始在其中一個方向上移動它。

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    switch (event.getAction()) { 

    case MotionEvent.ACTION_DOWN: 
     Log.i("test","Down"); 
     break; 

    case MotionEvent.ACTION_POINTER_UP: 

     break; 

    case MotionEvent.ACTION_MOVE: 
     Log.i("test","Move"); 
     break; 
    } 
+1

那你必須通過檢查x和y值來識別,意思是先保存位置,然後每次動作比較新位置和前一個位置。 –

回答

0
public class MainActivity extends Activity { 
... 
// This example shows an Activity, but you would use the same approach if 
// you were subclassing a View. 
@Override 
public boolean onTouchEvent(MotionEvent event){ 

    int action = MotionEventCompat.getActionMasked(event); 

    switch(action) { 
     case (MotionEvent.ACTION_DOWN) : 
      Log.d(DEBUG_TAG,"Action was DOWN"); 
      return true; 
     case (MotionEvent.ACTION_MOVE) : 
      Log.d(DEBUG_TAG,"Action was MOVE"); 
      return true; 
     case (MotionEvent.ACTION_UP) : 
      Log.d(DEBUG_TAG,"Action was UP"); 
      return true; 
     case (MotionEvent.ACTION_CANCEL) : 
      Log.d(DEBUG_TAG,"Action was CANCEL"); 
      return true; 
     case (MotionEvent.ACTION_OUTSIDE) : 
      Log.d(DEBUG_TAG,"Movement occurred outside bounds " + 
        "of current screen element"); 
      return true;  
     default : 
      return super.onTouchEvent(event); 
    }  
} 

欲瞭解更多詳情,請參閱this link,您還可以使用(我會建議)OnFling()的 GestureDetector爲訪問this link的例子...

+0

感謝您的答案,但以手勢,然後我不能限制用戶只使用四個方向? –

+0

Ofcourse你可以,但你將不得不巧妙地選擇X,Y值..搜索幾個更多的GestureDetector的例子有很多...... – aProgrammer