Android中手勢監聽GestureDetector基礎 – Android移動開發技術文章_手機開發 Android移動開發教學課程

最近做的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等)

作者“醬油JohnCookie的Coding之路”
 

發佈留言