Android中手勢監聽GestureDetector基礎

最近做的2個東西中都碰到了需要對用戶手勢輸入監聽並做出一定的相應 抽空把這些基礎實現做個記錄 網上這方面資料也不少 這裏說的手勢監聽只是簡單的比如上滑,下滑,拖動等,而沒有說到畫圖板這樣的應用 當然舉一反三這個也是能實現的。

這裏分2種 第一種是某個view(比如一個自定義的view或是控件本身,也包括layout)需要監聽,那麼這個時候需要在這個view上setOnTouchListener,另一種是程序本身就監聽,如此便是讓類實現2個接口,即implements OnGestureListener, OnTouchListener(然後同樣this.setOnTouchListener)

之後需要做的關鍵的一步,要記得對view或者class本身setOnTouchListener以後,還需要setLongClickable(true); 這是非常非常關鍵的一句話,不然手勢監聽無效

 

之後要做的是申明一個GestureDetector對象,直接new就可以了 這是需要實現幾個關鍵的方法,具體實現哪些就是根據需要了。方法包括:

onSingleTapUp,onShowPress,onScroll,onLongPress,onFling,onDown

各自的功能從方法名上應該都能看出,這其中有一個方法onFling是比較關鍵的,一般來說手勢識別都是在這個裏面做監聽,他在你做完一個手勢的時候被觸發。參數MotionEvent是對應你按下放開的動作,可以從中獲得按下點的X,Y等,velocityX參數是X方向上移動的速度,這樣當手勢速度很慢的時候,我們可以通過判斷不把這當做一個動作。

 

之後在onTouch方法上 把監聽丟給GestureDetector

return mGestureDetector.onTouchEvent(event);

 

最後如果程序不需要對手勢做監聽,只是需要響應觸屏動作,那可以不用GestureDetector,只需要在onTouch中隊MotionEvent.getAction做出判斷就行了(Action.DOWN,UP等)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章