如果我们写一个类并实现OnGestureListener接口,会要重写6个函数:如下
1、onDown(MotionEvent e):用户按下屏幕就会触发
2、onShowPress(MotionEvent e):如果是按下的时间超过瞬间,而且在按下的时候没有松开或者是拖动的,那么onShowPress就会执行。
3、onLongPress(MotionEvent e):长按触摸屏,超过一定的时长,就会触发这个事件。
触发顺序:onDown->onShowPress->onLongPress
4、onSingleTapUp(MotionEvent e):轻击一下屏幕,立刻抬起来,才会触发这个事件
触发顺序:点击一下非常快的(不滑动)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
点击一下稍微慢点的(不滑动)Touchup
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
5、onFling(MotionEvent e1,MotionEvente2,float velocity X,float velocity Y):滑屏,用户按下触摸屏,快速移动后松开,由1个MotionEvent ACTION_DOWN,多个ACTION_MOVE,1个ACTION_UP触发。
参数解释:
e1:第1个ACTION_DOWN MotionEvent
e2:最后一个ACTION_MOVE MotionEvent
Velocity X:X轴上的移动速度,像素/秒
Velocity Y:Y轴上的移动速度,像素/秒
6、onScroll(MotionEvent e1,MotionEvente2,float distanceX,float distanceY):在屏幕上拖动事件无论是用手拖动View,或者是以抛的动作滚动,都会多次触发这个方法。
在ACTION_MOVE动作发生时就会触发滑屏:
手指触动屏幕后,稍微滑动后立即松开
onDown->onScroll->onScroll->onScroll->….->onFiling
拖动
onDown-->onScroll-->onScroll-->onFiling
可见,无论是滑屏还是拖动,影响的只是中间的onScroll触发的数量多少而已。最终都会触发onFiling事件!