2016-08-24 3 views
0

크롬과 비슷한 방식으로 툴바에서 끌고 내려 오는 사람을 감지하여 대신 활동을 종료하려고합니다.툴바에서 제스처 탐지하기

그러나 나는 제스처가 전혀 감지되지 않는다는 것을 발견했다. (나는 onFling()이 호출되지 않았기 때문에 이것을 발견했다.) 그러나 싱글/더블 탭은 여전히 ​​감지되었다. 당신의 onFling 대신 flase 반환에

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    /*...*/ 
    Toolbar toolbar = (Toolbar) findViewById(R.id.wizard_toolbar); 

    final GestureDetector toolbarGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { 
     static final int MIN_SWIPE_VELOCITY = 200; 
     static final int MIN_SWIPE_DISTANCE = 200; 

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

     @Override 
     public boolean onSingleTapUp(MotionEvent e) { 
      Toast.makeText(EventCreationWizard.this, "You touched me!!!", Toast.LENGTH_LONG).show(); 
      return true; 
     } 

     @Override 
     public boolean onDoubleTap(MotionEvent e) { 
      Toast.makeText(EventCreationWizard.this, "You touched me!!! Twice!!!", Toast.LENGTH_LONG).show(); 
      return super.onDoubleTap(e); 
     } 

     @Override 
     public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { 
      if((event2.getY() - event2.getY() >= MIN_SWIPE_DISTANCE) && (Math.abs(velocityY) >= MIN_SWIPE_VELOCITY)) { 
       Toast.makeText(EventCreationWizard.this, "You swiped me!!!", Toast.LENGTH_LONG).show(); 
       return true; 
      } 

      return false; 
     } 
    }); 
    toolbar.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      return toolbarGestureDetector.onTouchEvent(motionEvent); 
     } 
    }); 
    setSupportActionBar(toolbar); 
    /*...*/ 
} 
+0

** onfling **'return super.onFling (e1, e2, velocityX, velocityY); ' – Amir

+0

@Amir가'return false' 대신에 – TheKingOfAtlantis

+0

내 대답보기,이 대답은 내 문제를 해결했습니다. 너의 문제를 너무 고쳐라. – Amir

답변

0

을 :

super.onFling(e1, e2, velocityX, velocityY);

을 그리고에 true를 돌려 아래

가 작동하는지 내가 테스트하는 데 사용되는 코드에서 미리보기입니다 setOnTouchListener

toolbar.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     toolbarGestureDetector.onTouchEvent(motionEvent); 
     return true; 
    } 
}); 
+0

문제가 반환되는 것 이상으로 발생한다는 것을 알았습니다. 오히려 onFling이 호출되지 않습니다. 어쨌든 감사합니다. – TheKingOfAtlantis