GestureDetector 和SimpleOnGestureListener的使用和解釋

  //1、創建一個手勢識別器
  private GestureDetector mGestureDetector  = new GestureDetector(getApplicationContext(),new MyOnGestureListener());

//3、將MotionEvent  事件傳給GestureDetector處理
// MotionEvent 可以來自OnTouchEvent(MotionEvent event) 或者來自OnTouchListener的onTouch(View view,MotionEvent event);
// 這裏使用來自OnTouchEvent(MotionEvent event)的效果是一樣的
  @Override
  public boolean onTouchEvent(MotionEvent event) {
      return mGestureDetector.onTouchEvent(event);
       //將事件傳遞給了GestureDetector  然後它內部將事件進行判斷識別  調用監聽器中的對應方法
      //最終實現事件的處理
  }
  //2、實現一個 手勢識別器回到接口-----在裏面處理各個手勢對應的代碼
  public class MyOnGestureListener extends GestureDetector.SimpleOnGestureListener {
      //觸摸屏幕 點下   down
      @Override
      public boolean onDown(MotionEvent e) {
          return super.onDown(e);
      }
      //手指擡起  單擊 up
      @Override
      public boolean onSingleTapUp(MotionEvent e) {
          return super.onSingleTapUp(e);
      }
      //手指擡起以後一段時間(很短的時間) 沒有再點擊 就會判定爲只是單擊確認
      //如果 在等待的時間內又點擊l一次   就是不會觸發該方法  那就觸發雙擊事件
      @Override
      public boolean onSingleTapConfirmed(MotionEvent e) {
          return super.onSingleTapConfirmed(e);
      }
      // 點擊事件的分類
      //1、點擊立即擡起   onDown -->onSingleTapUp -->onSingleTapConfirmed
      //2、點擊後沒有滑動慢點擡起   onDown --> onShowPress--> onSingleTapUp -->onSingleTapConfirmed
      //3、點擊後沒有滑動很長時間才擡起
      //onDown --> onShowPress--> onLongPress-->onSingleTapUp -->onSingleTapConfirmed
      @Override
      public void onShowPress(MotionEvent e) {
          super.onShowPress(e);
      }
      @Override
      public void onLongPress(MotionEvent e) {
          super.onLongPress(e);
      }
      // 雙擊的第二下Touch down時觸發
      @Override
      public boolean onDoubleTap(MotionEvent e) {
          return super.onDoubleTap(e);
      }
      // 雙擊的第二下Touch down和up都會觸發,可用e.getAction()區分
      @Override
      public boolean onDoubleTapEvent(MotionEvent e) {
          return super.onDoubleTapEvent(e);
      }
      // e1:第1個ACTION_DOWN MotionEvent
      // e2:當前滑動到的位置的ACTION_MOVE MotionEvent
      //distanceX   distanceY  xy方向滑動的距離
      //在滑動的過程中多次調用
@Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return super.onScroll(e1, e2, distanceX, distanceY); } @Override // e1:第1個ACTION_DOWN MotionEvent // e2:最後一個ACTION_MOVE MotionEvent // velocityX:X軸上的移動速度,像素/秒 // velocityY:Y軸上的移動速度,像素/秒 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return super.onFling(e1, e2, velocityX, velocityY); } @Override public boolean onContextClick(MotionEvent e) { return super.onContextClick(e); } }

這裏有一個比較好的文章   Android觸控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程) 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章