我正在創建一個視圖,需要消耗幾乎任何手勢。爲此,我創建了一個ScaleGestureDetector和一個GestureDetector。我還創建了一個監聽器類,並意識到可以實現我需要的每個接口;所以我做了。這使得總的意義OnGestureListener和OnDoubleTapListener,因爲它們來自同一類,但:一個OnGestureListener對象可以處理兩個GestureDetector對象嗎?
- 請問ScaleGestureDetector想到自己的監聽器類?
- 如果它對同一個班級感到滿意,它會期待它自己的對象嗎?
- 相反,我是否需要在兩個探測器上使用相同的監聽器?
實驗已經確認以下內容:
- 你的確可以使用一個監聽器類,但如果他們消耗相同的事件
- ScaleGestureDetector和GestureDetector可惹惱對方。然而
看來你可以總是先打電話規模探測器,然後運行常規檢測前檢查其isInProgress()方法阻止這種相互irking:
public boolean onTouchEvent(MotionEvent event) { //let the ScaleGestureDetector try first mScaleDetector.onTouchEvent(event); //if isInProgress() returns true then it's consuming the event if(mScaleDetector.isInProgress()) return true; //if isInProgress() returns false it isn't consuming the event //it's therefore safe to pass it to the regular detector mPrimaryDetector.onTouchEvent(event); return true; }
這非常有用,謝謝!我根本不知道「ignoreMultiTouch」。 –
順便說一句,「煩惱」的表現形式是「MotionEvent」被一個監聽器類改變,導致另一個監聽器崩潰。 –
@Noel看起來像ignoreMultiTouch參數已被重命名爲未使用,並像它被命名不再使用。不知道爲什麼。 – Flynn81