GestureDetector中無法提示調用simpOnGesturelistener的問題

在Android開發中,常用到手勢識別模塊,例如對down,up,scroll,filing等手勢的判斷和監聽。這個模塊是如何實現的呢?

 我們知道View類中有個View.OnTouchListenr內部接口,通過重寫它的onTouch(VIew v,MotionEvent event)方法,可以處理一些touch事件,但是它的處理過於簡單,無法滿足我們炫酷吊炸天的開發需求,而且使用起來比較麻煩,因爲我們得自己去判斷用戶的手勢。

 鑑於此,Android sdk給我們提供了GestureDetector(手勢識別)類,通過這個類,我們可以方便的識別不同手勢並調用不同的功能。在這個類中,是哪個方法來識別不同手勢呢?它就是onTouchEvent(event),省去了作位高大上程序員的我們的搬磚苦力。手勢識別後是怎麼處理的呢?怎麼添加後面的業務邏輯呢?這個類對外提供了兩個接口:OnGestureListenr和OnDoubleTapListener,還有一個內部類SimpleOnGestureListener,而這個內部類實現了上面的兩個接口,提供給我們一個更方便的響應不同手勢的類,並且該類是一個static class,也就是說他實際上是一個外部類,程序員可以在外部繼承這個類,重寫裏面的手勢處理方法,通過GestureDetector的構造方法可以將SimpleOnGestureListener對象傳遞進去,這樣就能處理不同手勢了。


因爲是一個內部類,我們在調用的時候會出現一個小問題:

GestureDetector myGestureDetector = new GestureDetector(Setup1Activity.this, new GestureDetector.SimpleOnGestureListener(){

 @Override 

public boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) { return super.onFling(e1, e2, velocityX, velocityY); } });


在綠色部分調用時候,有的人會通過'alt+/ '  無法提示simpleOnGestureListener()的調用,這與api版本有關,當然,考慮到SimpleOnGestureListener實際上是內部類(雖然是靜態的)因此應該通過GestureDetector外部類來調用(如碼),這樣問題就解決了

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