private class gestureListener implements GestureDetector.OnGestureListener{
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
}
这里将重写六个函数,他们的含义如下:
-
onDown(MotionEvent e):用户按下屏幕就会触发
-
onShowPress(MotionEvent e):如果按下的时间超过瞬间,而且在按下的时候没有松开或者是拖动,该函数就会触发
-
onSingleTapUp(MotionEvent e):一次单击然后抬起的操作,就是手指往屏幕上点一下然后抬起就会回调的函数,当然了,如果我们做了其他的操作,产生了除了onDown()和onShowPress以外的方法触发,那么该方法就不会触发了。
触发顺序是:(很快的轻触抬起)onDown --> onSignleTapUp --> onSingleTapConfirmed
(慢一点的轻触抬起)onDown --> onShowPress --> onSingleTapUp -->onSingleTapConfirmed
- onLongPress(MotionEvent e):长按屏幕超过一定的时候就会触发该函数。
触发顺序时:onDown --> onShowPress --> onLongPress
-
onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滑屏。用户按下触摸屏、快速移动后松开,由一个MotionEvent ACTION_DOWN、多个ACTION_MOVE、一个ACTION_UP触发
-
onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):在屏幕上拖动事件。无论是用手拖动View,还是以抛的动作滚动,都会多次触发这个函数,在ACTION_MOVE动作发生时就会触发该函数
手指触动屏幕后,稍微滑动后立即松开,触发顺序为:onDown --> onScroll -> onScroll -->…–>onFling
拖动的触发顺序为ÿ