//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. Android Button 控件绑定单击事件
  2. Android中Touch事件的处理
  3. Android03_事件处理
  4. android 事件流转机制
  5. 【android基础】之Android返回键处理(事件)
  6. Android事件分发

随机推荐

  1. 在取消悬停后如何才能使css过渡到最后?
  2. HTML5批量拖拽图片到网页
  3. 两个堆叠DIV的顶部DIV如何影响另一个DIV
  4. HTML 元素用来显示已知范围的标量值或者
  5. 如何在CSS中单独定位此HTML代码?
  6. HTML解析利器--Jsoup学习(基于kotlin编码)
  7. 性能权衡 - CSS效率,CSS文件大小,HTML文件
  8. 上传文件,那么form中用来接收文件的数据
  9. 使用CSS Floats和边距问题
  10. CSS自定义光标在FF/Chrome中不能工作