2011-12-02 4 views
0

내 응용 프로그램은 매우 정확한 움직임 측정이 필요합니다. 그다지 정확하지는 않지만 가까이에 있다면 사용자가 손가락을 화면에 대고 왼쪽 또는 오른쪽으로 이동하면 최대 100 픽셀을 가정하면 추적 할 수 있습니다.플링을하면서 픽셀 이동을 얻는 방법?

class MyGestureDetector extends SimpleOnGestureListener { 
     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
      try { 

       if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
        return false; 
       // right to left swipe 
       if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        //increament in image index & showImage() 
       } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        //decrement in image index & showImage() 
       } 
      } catch (Exception e) { 
       // nothing 
      } 
      return false; 
     } 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (gestureDetector.onTouchEvent(event)) 
      return true; 
     else 
      return false; 
    } 

실제로 내가 애니메이션 프레임을 가지고 있고 터치 이벤트에 내가 해당 사용자가 부드러운 방법으로 자사의 3D 뷰를 볼 수있을 수 있도록 신속하게 그 이미지를 이동할 내가 추적 픽셀의 픽셀이있는 경우에만 가능하다 .

어떤 가이드 나 어떻게 이것을 달성하기 위해?

답변

0

gestureListener가 최선의 방법인지 잘 모르겠습니다. OnTouchEvent를 사용하여 필요한 수준을 추적 할 수있었습니다.

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    switch (event.getAction() & MotionEvent.ACTION_MASK) { 

    case MotionEvent.ACTION_DOWN: 
     // capture start position from event 
     break; 

    case MotionEvent.ACTION_MOVE: 
     // do something interactively 
     break; 

    case MotionEvent.ACTION_UP: 
     // check distance between start and end postions and do something 
     break; 
    } 
    return true; // return true if you handle event otherwise return false! 
} 

다른 많은 작업 이벤트가 있습니다.

0

SWIPE_MIN_DISTANCE, SWIPE_MAX_OFF_PATH 또는 SWIPE_THRESHOLD_VELOCITY을 정의 했습니까? 당신은 그들을 선언 할 수

private static final int SWIPE_MIN_DISTANCE = 200; 
private static final int SWIPE_MAX_OFF_PATH = 250; 
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 

당신이 원하는대로 숫자 값을 변경할 수 있습니다.

관련 문제