마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

gridView에서는 원래 Swipe 제스처가 안되나요?

0 추천
지금 달력을 gridview 로 만든 상태입니다.

달력이 있는 Activity에 swipe 액션 소스를 넣고 작동을 시켰는데

gridview를 제외한 다른부분에서는 작동이 잘되는데 딱 gridview안에서는 작동이안됩니다.

swipe로 달력넘기는 기능을 꼭해야하는데 어떻게 해야할지 모르겠네요 아예 인식 자체가 안되어버리니깐요;;

혹시몰라 swipe 소스를 같이 올려봅니다..

 

다시한번 말씀드리지만 swipe기능은 같은 액티비티 안에서 gridview를제외한 부분은 잘 작동하고

gridview에서만 swipe가안됩니다... 아래 소스로 하면 토스트 값이 안나옵니다

 

 

제발해결책좀알려주세요ㅠㅠ

 

public boolean onTouchEvent(MotionEvent e){
     return detector.onTouchEvent(e);
 }

 final static int DISTANCE = 200;
 final static int VELOCITY = 350;
 
 OnGestureListener gestureListener = new OnGestureListener(){
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
   if(e1.getX()-e2.getX() < DISTANCE && Math.abs(velocityX) > VELOCITY){
    ToastOut("좌->우");
   }
   if(e2.getX()-e1.getX() < DISTANCE && Math.abs(velocityX) > VELOCITY){
    ToastOut("우->좌");
   }
   return false;
  }
 
  public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
   return false;
  }
 
     public void onLongPress(MotionEvent e) {
     }       
 
     public void onShowPress(MotionEvent e) {
     }
 
     @Override
     public boolean onSingleTapUp(MotionEvent e) {
      return false;
     }
 
     public boolean onDown(MotionEvent e) {
      return false;
     }
 };
익명사용자 님이 2013년 8월 2일 질문

1개의 답변

0 추천
onFling 마지막에 return true 로 바꿔보세요

아마도 gridView자체에 있는 스크롤이 우선적으로 적용되는것 같네여
Gradler (109,780 포인트) 님이 2013년 8월 5일 답변
네 자체의 스크롤이 우선적용되는거 같기도 하고 아닌거같기도한데요..

일단 true로 고쳐도 똑같이 안되네요 ㅠㅠ
그럼 그리드뷰의 터치이벤트를 오버라이드 하셔서 다음과 같이
수정해보시기 바랍니다.

gridView.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        return detector.onTouchEvent(event);
    }
});
오마이갓!!!!!!!!!!!!!!!!!!!!!!!!!!!
님은... 천재이시고 신이시고 영웅이십니다

감사합니다!!!정말 감사합니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!
근데 하나만 더 질문할게요 ㅠㅠ
이게 스와이프가 좌우로만 하고싶은데 위아래로도 액션이 인식되네요
어케하면 좌우로만 할 수 있을까요...

위에 소스보면 좌우로만 설정되어있는거같은데...
아 아니네요 잘되네요 감사합니다 정말!!!
...