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