以前只知道控件的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用户手势检测实例讲解
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。