2013-05-21 5 views
0

아래의 onTouch 메서드를 사용하여 손가락을 화면에서 왼쪽, 오른쪽, 아래로 움직이는 지 감지 할 수 있는지 궁금합니다. 개체 그리드가 있고 사용자가이 개체 중 하나를 네 방향으로 움직일 수 있기를 바랍니다.왼쪽, 오른쪽, 위, 아래로 움직임을 감지하는 방법

내 생각은 Action_Down 이벤트를 사용하여 X 및 Y 위치를 얻은 다음 목록의 모든 개체를 검사하여 X 및 Y 값이 어느 개체인지 확인합니다. 그런 다음 Action_Move를 사용하여 한 방향으로 이동하십시오. 자세한 내용은 this link를 참조하십시오

@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

OnFling() GestureDetector을 당신은 또한 사용할 수 있습니다 (그리고 나는 것을 권장합니다) 그 당신은 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의 예를 들어

+0

해답을 주셔서 감사하지만 제스처를 사용하면 사용자를 그냥 사용하도록 제한 할 수 없다. 네 방향? –

+0

Ofcourse 당신은 할 수 있지만 당신은 영리하게 X, Y 값을 선택해야합니다 .. GestureDetector의 몇 가지 예를 찾으십시오. – aProgrammer

관련 문제