失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android使用GestureDetector进行手势检测

Android使用GestureDetector进行手势检测

时间:2022-12-21 11:48:16

相关推荐

Android使用GestureDetector进行手势检测

1.引言

在操作应用的时候,会有很多不同的手势操作,如按下、单击、双击、长按等手势,我们可以在这些手势事件中添加相应的业务逻辑,那么如何检测不同的手势操作就比较重要了,本文将带大家了解如何使用GestureDetector进行手势检测。

2.进行手势检测

2.1 创建GestureDetector

进行手势检测之前,需要先新建GestureDetector对象,示例如下:

gestureDetector = new GestureDetector(context, new GestureDetector.OnGestureListener() {@Overridepublic boolean onDown(MotionEvent e) {log("onDown");return true;}@Overridepublic void onShowPress(MotionEvent e) {log("onShowPress");}@Overridepublic boolean onSingleTapUp(MotionEvent e) {log("onSingleTapUp");return true;}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {log("onScroll");return true;}@Overridepublic void onLongPress(MotionEvent e) {log("onLongPress");}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {log("onFling");return true;}});

2.2 与onTouchEvent结合使用

示例中重写了Activity的onTouchEvent(MotionEvent event)方法,并在其内部使用GestureDetector处理触摸事件,示例如下:

@Overridepublic boolean onTouchEvent(MotionEvent event) {boolean b = gestureDetector.onTouchEvent(event);if (b) {return true;}return super.onTouchEvent(event);}

2.3 GestureDetector.OnGestureListener

实现GestureDetector.OnGestureListener内的方法,在其中可以检测到多种手势,如onDown(MotionEvent e)按下、onShowPress(MotionEvent e)已经执行按下,还没有移动或抬起、onSingleTapUp(MotionEvent e)单击、onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)滚动、onLongPress(MotionEvent e)长按、onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)。

2.4 检测双击手势

双击手势也是一种常见的手势事件,使用GestureDetector检测双击手势需要调用setOnDoubleTapListener()方法设置GestureDetector.OnDoubleTapListener(),并实现其中的方法,其中的onDoubleTap(MotionEvent e)表示双击事件,示例如下:

gestureDetector.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {log("onSingleTapConfirmed");return true;}@Overridepublic boolean onDoubleTap(MotionEvent e) {log("onDoubleTap");return true;}@Overridepublic boolean onDoubleTapEvent(MotionEvent e) {log("onDoubleTapEvent");return true;}});}

2.5 GestureDetector.SimpleOnGestureListener

如果不想实现GestureDetector.OnGestureListener 内的多个方法,那么可以创建类并继承GestureDetector.SimpleOnGestureListener,示例如下:

class SimpleGestureListener extends GestureDetector.SimpleOnGestureListener{@Overridepublic boolean onDown(MotionEvent e) {return true;}}

在创建GestureDetector对象的时候,传入扩展后的类对象即可,示例如下:

gestureDetector = new GestureDetector(context, new SimpleGestureListener());

3.总结

使用GestureDetector能方便地进行手势检测,灵活合理地使用手势检测,在其中处理应用的业务逻辑,能让体验更加的友好。

如果觉得《Android使用GestureDetector进行手势检测》对你有帮助,请点赞、收藏,并留下你的观点哦!

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