2013-01-09 5 views
1

나는 개인화 한 목록보기가 있으며 잘 작동하는 setOnItemLongClickListener()을 추가했습니다. 그렇다면 잘 작동하는 제스처 listView.setOnTouchListener(new OnSwipeTouchListener())을 구현하기로 결정했습니다. 다른 게시물의 OnSwipetouchListener 클래스를 복사했습니다.Android : listpress의 항목에서 Longpress를 사용하여 스 와이프 제스처를 결합하는 방법

스 와이프 리스너를 추가하면 longPress가 더 이상 작동하지 않습니다. 나는 그것이 슬쩍 듣는 사람이 길게 누르는 행동을 취하고 longPress가 아무 것도 할 수 없기 때문이라고 생각합니다.

내가하고 싶은 것 : 모든 것이 길게 누르 간다 후

슬쩍 리스너는 2 초 이하 모든 것을 가져옵니다. 그래서 여전히 스 와이프 제스처로 listview 내용을 변경할 수 있으며 각 listitem에 대한 함수를 만들 수도 있습니다.

내 코드 :

public class OnSwipeTouchListener implements OnTouchListener { 

    private final GestureDetector gestureDetector = new GestureDetector(new GestureListener()); 

    public boolean onTouch(final View v, final MotionEvent event) { 
     //super.onTouch(v, event); 
     return gestureDetector.onTouchEvent(event); 
    } 

    private final class GestureListener extends SimpleOnGestureListener { 

     private static final int SWIPE_THRESHOLD = 100; 
     private static final int SWIPE_VELOCITY_THRESHOLD = 100; 

     @Override 
     public boolean onDown(MotionEvent e) { 
      return true; 
     } 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
      boolean result = false; 
      try { 
       float diffY = e2.getY() - e1.getY(); 
       float diffX = e2.getX() - e1.getX(); 
       if (Math.abs(diffX) > Math.abs(diffY)) { 
        if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { 
         if (diffX > 0) { 
          onSwipeRight(); 
         } else { 
          onSwipeLeft(); 
         } 
        } 
       } else { 
        if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { 
         if (diffY > 0) { 
          onSwipeBottom(); 
         } else { 
          onSwipeTop(); 
         } 
        } 
       } 
      } catch (Exception exception) { 
       exception.printStackTrace(); 
      } 
      return result; 
     } 
...methods... 
} 

답변

1

는 onDown 방법을 제거합니다. 지금은 항상 true로 돌아가 longPress가 처리되는 것을 방지합니다.

관련 문제