如果我們寫一個類並實現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事件!