600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【Android】GestureDetector 类的手势操作方法含义

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

时间:2018-10-11 06:08:10

相关推荐

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

转载请注明出处,原文链接:/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() {@Overridepublic boolean onSingleTapUp(MotionEvent e) {return true;}@Overridepublic void onLongPress(MotionEvent e) {}@Overridepublic 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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。