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的使用教程) 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值