Android 手势识别

1、GestureDetector
OnGestureListener接口的6个方法:
单击:onDown(MotionEvent e)
抬起:onSingleTapUp(MotionEvent e)
短按:onShowPress(MotionEvent e)
长按:onLongPress(MotionEvent e)
滚动:onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float disanceY)
滑动:onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
(注解:velocity:速率,速度)

OnDoubleTapListener接口的3个方法:
双击:onDoubleTap(MotionEvent e)
双击按下和抬起各触发一次:onDoubleTapEvent(MotionEvent e)
单击确认:onSingleTapConfirmed(MotionEvent e)就是很快地按下并抬起,但不连续点击第二下。

如果分别去实现这两个接口的所有方法,未免太麻烦了,所以这里提供了另一个接口:SimpleOnGestureListener,它已经继承了前面所讲的两个监听器。

  • 继承SimpleOnGestureListener
  • 重载感兴趣的手势

2、GestureOverlayView
给gestureOverlayView设置监听器:
gestureOverlayView.addOnGesturePerformedListener(new OnGesturePerformedListener(){})
重写方法onGesturePerformed()。
如图,onGesturePerformed()的示例代码,也就是关于手势识别的代码实现。
ArrayList:预测集
predction.score:相似度,值越大,则越相似,也就是说你必须做出几乎一模一样的手势才能通过识别。相似度的取值范围一般是0.0~10.0,取10.0就已经太夸张了,因为很难做出非常接近的手势。所以,这里的下限只取5.0:
predction.score>=5.0
如果觉得显示的手势的轨迹不好看,可以自定义轨迹的样式。
一些常见的XML属性设置:
Android:eventInterceptionEnabled 定义当手势已经被识别出来时,是否拦截该手势动作
Android:fadeDuration 当用户画完的时候,手势效果淡出的时间
Android:fadeEnabled 用户画完之后,手势是否自动淡出
Android:gestureColor 手势的颜色
Android:gestureStrokeType 笔画的类型
Android:gestureStrokeWidth 笔画的粗细

你可能感兴趣的:(Android 手势识别)