【Android】GestureDetector 类的手势操作方法含义

转载请注明出处,原文链接: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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android GestureDetector是Android框架提供的一个手势检测器,可以通过它来识别用户在屏幕上的手势操作,例如单击、双击、长按、滑动等。使用GestureDetector可以大大简化手势操作的处理,同时也可以提升用户的使用体验。 GestureDetector主要有两种用法: 1. 直接使用GestureDetector 在Activity或View中创建GestureDetector实例,然后在onTouchEvent()方法中将MotionEvent事件传递给GestureDetector实例进行处理。示例代码如下: ``` public class MyActivity extends Activity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { private GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gestureDetector = new GestureDetector(this, this); gestureDetector.setOnDoubleTapListener(this); } @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); } @Override public boolean onSingleTapConfirmed(MotionEvent e) { // 处理单击事件 return true; } @Override public boolean onDoubleTap(MotionEvent e) { // 处理双击事件 return true; } @Override public boolean onDown(MotionEvent e) { return true; } // 省略其他回调方法 } ``` 2. 继承SimpleOnGestureListener SimpleOnGestureListener是GestureDetector.OnGestureListener和GestureDetector.OnDoubleTapListener接口的默认实现,我们可以通过继承它来处理手势操作。示例代码如下: ``` public class MyGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapConfirmed(MotionEvent e) { // 处理单击事件 return true; } @Override public boolean onDoubleTap(MotionEvent e) { // 处理双击事件 return true; } // 省略其他回调方法 } ``` 在Activity或View中创建GestureDetector实例,然后将继承自SimpleOnGestureListener的实例设置给GestureDetector实例。示例代码如下: ``` public class MyActivity extends Activity { private GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gestureDetector = new GestureDetector(this, new MyGestureListener()); } @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); } } ``` 以上就是Android GestureDetector的基本用法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值