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

版权声明:本文为博主原创文章,商业转载请联系博主获得授权,非商业转载请注明出处,否则追究其法律责任。 https://blog.csdn.net/u013642500/article/details/80489115

转载请注明出处,原文链接: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


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

猜你喜欢

转载自blog.csdn.net/u013642500/article/details/80489115