GestureDetector.SimpleOnGestureListener的使用教程

Android sdk给我们提供了GestureDetector类,通过这个类我们可以识别很多的手势

当用户触摸屏幕的时候,会产生许多手势,例如

手势 描述
onDown(按下) 手指刚刚接触到触摸屏的那一刹那,就是触的那一下。
onFling(抛掷) 手指在触摸屏上迅速移动,并松开的动作。
onScroll(滚动) 手指在触摸屏上滑动。
onShowPress(按住) 手指按在触摸屏上,down事件发生而move或则up还没发生前触发该事件
onSingleTapUp(抬起) 一次点击up事件;在touch down后又没有滑动
onLongPress(长按) 手指按住屏幕持续一段时间,并且没有松开。
onDoubleTap(双击) 在双击的第二下,Touch down时触发 。
onDoubleTapEvent 通知DoubleTap手势中的事件,包含down、up和move事件(指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知);双击的第二下Touch down和up都会触发,可用e.getAction()区分。
onSingleTapConfirmed 用来判定该次点击是SingleTap而不是DoubleTap

注:

scroll表示手指滑动多少距离,界面跟着显示多少距离,而fling是根据你的滑动方向与轻重,还会自动滑动一段距离。例如:电子书的滑动翻页

常用点击发生顺序:

1)快速点击一下(不滑动):

onDown--》onSingleTapUp--》onSingleTapConfirmed 

2)慢的点击一下(不滑动):

onDown--》onShowPress--》onSingleTapUp--》onSingleTapConfirmed

3)长按事件

onDown--》onShowPress--》onLongPress

4)手指触动屏幕后,稍微滑动后立即松开

onDown--》onScroll--》onScroll--》onScroll--》………--》onFling

5)拖动

onDown--》onScroll--》onScroll--》onFiling

使用GestureDetector,有4步:

1.创建OnGestureListener监听函数:

// 构造实例:
GestureDetector.OnGestureListener listener = new GestureDetector.OnGestureListener(){
};

// 构造类:
private class gestureListener implements GestureDetector.OnGestureListener{
}

// 构造类:
private class gestureListener extends GestureDetector.SimpleOnGestureListener {
}

2.创建GestureDetector实例

// 有三个,根据需要选择
GestureDetector mGestureDetector=new GestureDetector(GestureDetector.OnGestureListener listener);
GestureDetector mGestureDetector=new GestureDetector(Context context,GestureDetector.OnGestureListener listener);
GestureDetector mGestureDetector=new GestureDetector(Context context,GestureDetector.SimpleOnGestureListener listener);

3.onTouch(View v, MotionEvent event)或者onTouchEvent(MotionEvent event)中拦截:

public boolean onTouchEvent(MotionEvent event) {
    return mGestureDetector.onTouchEvent(event);

}

4.控件绑定

TextView tv = (TextView)findViewById(R.id.tv);
 tv.setOnTouchListener(this);

参考:
https://blog.csdn.net/nizhuanxingheit/article/details/48716769
https://blog.csdn.net/harvic880925/article/details/39520901

posted on 2020-04-27 20:34  JJ_S  阅读(1287)  评论(0编辑  收藏  举报