转载请注明出处,原文链接:https://blog.csdn.net/u013642500/article/details/80489115

【前言】

GestureDetector 类含有三个接口:OnGestureListener、OnDoubleTapListener、OnContextClickListener。

GestureDetector 类含有两个内部类:SimpleOnGestureListener、GestureHandler。

【正文】

直接通过调用接口重写手势操作方法:

接口OnGestureListener:

boolean onDown(MotionEvent e);
按下:手指接触到触摸屏的那一刹那触发。(任何单击手势动作都会先执行一次 onDown 动作。)

void onShowPress(MotionEvent e);
按住:手指按在触摸屏上触发,它的时间范围在按下起效,在长按(onLongPress)和滚动(onScroll)之前。

void onLongPress(MotionEvent e);
长按:手指按在触摸屏上,不松开,且手指不移动持续一段时间触发。(该方法执行前一定会执行一次 onShowPress 动作。如果执行该方法,则不会执行抬起 onSingleTapUp 动作。)

boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);
滚动:手指在触摸屏上滑动时触发。(如果执行该方法,则不会执行 onSingleTapUp 动作。)

boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY);
抛掷:手指在触摸屏上迅速移动,并松开的动作,离开触摸屏时触发。(如果执行该方法,则不会执行 onSingleTapUp 动作。)

boolean onSingleTapUp(MotionEvent e);

抬起:手指快速单击屏幕,离开触摸屏时触发。

接口OnDoubleTapListener:

boolean onSingleTapConfirmed(MotionEvent e);
抬起:与 onSingleTapUp 相同,但有附加条件,确保单击之后短时间内没有再次单击,才会触发。

boolean onDoubleTap(MotionEvent e);
双击:双击的第二下Touch down时触发。

boolean onDoubleTapEvent(MotionEvent e);
双击:双击的第二下Touch down和up都会触发,可用e.getAction()区分。

接口OnContextClickListener:

boolean onContextClick(MotionEvent e);

Android6.0(API 23)及以上使用,用于检测外部设备上的按钮是否按下的,例如蓝牙触控笔上的按钮。(如果侦听 onContextClick(MotionEvent),则必须在 View 的 onGenericMotionEvent(MotionEvent)中调用 GestureDetector 的 OnGenericMotionEvent(MotionEvent)。)


继承 GestureDetector.SimpleOnGestureListener 类,重写手势操作方法:

GestureDetector mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {    @Override    public boolean onSingleTapUp(MotionEvent e) {        return true;    }    @Override    public void onLongPress(MotionEvent e) {    }    @Override    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {        return true;    }});

不必将每一个方法都重写,想实现哪个方法,就重写哪个。


【注意事项】

1、如果监听双击事件:onSingleTapUp()会被触发两次,但是onSingleTapConfirmed()一次都不会被触发。所以,如果你既想监听单击事件,又想监听双击时间,那么请使用onSingleTapConfirmed()函数。

2、点击一下,非常快地(不滑动)Touch up:onDown → onSingleTapUp → onSingleTapConfirmed 

3、点击一下,稍微慢点地(不滑动)Touch up:onDown → onShowPress → onSingleTapUp → onSingleTapConfirmed


由于本人安卓知识及技术有限,本文如有错误或不足请评论指出,非常感谢!

更多相关文章

  1. Android(安卓)DownloadProvider 源码分析
  2. Android(安卓)- ViewPager使用PagerAdapter,instantiateItem时出
  3. Android发送post请求
  4. Android(安卓)App 性能优化
  5. android画笔错位问题的解决
  6. android仿QQ长按气泡弹窗效果,仿IOS控件,支持跟随手指显示

随机推荐

  1. 【Android】高德地图2DMap,隐藏“高德地图
  2. android studio 3.0 修改release生成的ap
  3. Android BaseAdapter使用及listview优化
  4. android 登录前检查网络状态
  5. Android Studio批量打包
  6. Android再按一次退出程序实现方法
  7. Android启动流程简析(一)
  8. android中.classpath和.project作用
  9. android 重命名文件
  10. Android中使用SVG与WebFont矢量图标