安卓手势识别器GestureDetector使用详解

  

以前只知道控件的onTouchEvent()事件,它的动作有MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE, MotionEvent.ACTION_UP;今天有个需求,要监听控件的双击,拖动,滑动等事件,这时onTouchEvent()很明显不能满足我们的需求,经多方打听,找到了今天的主角GestureDetector、下面就对它进行简单的学习。

  

<>强构造方法:

  

已过时的有2个,不推荐使用。

  

GestureDetector (GestureDetector。

onGestureListener侦听器);   

GestureDetector (GestureDetector。onGestureListener侦听器,处理程序处理程序);

  

推荐使用。

  

, GestureDeterctor(上下文语境,GestureDetector。

onGestureListener侦听器);   

, GestureDeterctor(上下文语境,GestureDetector。onGestureListener侦听器,处理程序处理程序);

  

, GestureDeterctor(上下文语境,GestureDetector。onGestureListener侦听器,处理程序处理程序,未使用布尔);

  

参数处理程序主要用来执行延时操作时使用,参数未使用暂时没有使用。

  

从构成函数可以看的出,当我们需要创建一个GestureDetector对象时,必须给它传一个GestureDetector.onGestureListener对象,查看API之后,发现它是个接口(接口),创建GestureDetector.onGestureListener的对象时,必须实现一下几个方法:

  

<强>

  

,,,,,,当用户按下时的回调。

  

  

,,,,,,当用户快速拖动,并离开屏幕时,控件还在滑动的回调。

  

<强>

  

,,,,,,当用户长按控件时的回调。

  

<强>

  

,,,,,当用户拖着控件(控件本身并没有动)滑动时的回调。

  

  

,,,,,,当用户按下,还没有执行移动或者抬起的动作的回调。

  

  

,,,,,,用户按下,立即抬起,没有做其它动作时的回调。

  

有了这个监听之后,我们还可以给GestureDetector设置双击监听,使用的方法是:

  

mGestureDetector.setOnDoubleTapListener (GestureDetector.OnDoubleTapListener>   GestureDetector。SimpleOnGestureListener mGestureDetector=new SimpleOnGestureListener () {      @Override   公共布尔onSingleTapUp (MotionEvent e) {   返回super.onSingleTapUp (e);   }      @Override   公共空间onLongPress (MotionEvent e) {   super.onLongPress (e);   }      @Override   公共布尔onScroll (MotionEvent MotionEvent e1, e2、   distanceX浮动,浮动distanceY) {   超级回报。onScroll (e1, e2、distanceX distanceY);   }      @Override   公共布尔onFling (MotionEvent MotionEvent e1, e2、   velocityX浮动,浮动velocityY) {   超级回报。onFling (e1, e2、velocityX velocityY);   }      @Override   公共空间onShowPress (MotionEvent e) {   super.onShowPress (e);   }      @Override   公共逻辑等(MotionEvent e) {   返回super.onDown (e);   }      @Override   公共布尔onDoubleTap (MotionEvent e) {   返回super.onDoubleTap (e);   }      @Override   公共布尔onDoubleTapEvent (MotionEvent e) {   返回super.onDoubleTapEvent (e);   }      @Override   公共布尔onSingleTapConfirmed (MotionEvent e) {   返回super.onSingleTapConfirmed (e);   }      };   之前      

只有理论没有实践,怎么行呢?这里我也写了一个演示,这个演示是我从另一篇博客中抄的,文章的内容也是参考他的博客写的,下面会把大神的那篇博客地址贴出来。
  

  

参考资料:Android GestureDetector用户手势检测实例讲解

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

安卓手势识别器GestureDetector使用详解