2013-11-04 98 views
1

我的應用需要檢測簡單的手勢(滾動,點擊,長按)和縮放。任何一個探測器都可以自行工作 - GestureDetector.SimpleOnGestureListener用於點按/滾動,ScaleGestureDetector.SimpleOnScaleGestureListener用於縮放。問題在於兩者結合。更具體地說,開始縮放非常困難,因此在onScaleBegin之前不會生成幾個onScroll事件。如何正確合併ScaleGestureDetector.SimpleOnScaleGestureListener和GestureDetector.SimpleOnGestureListener?

有沒有什麼好的方法可以解決這個問題?我能想到的唯一解決方案是在處理它們之前緩衝一些事件(事件隊列),並在檢測到onScaleBegin時丟棄onScroll/onTap而不進行處理。但那會引入輸入延遲(我的應用程序已經有了,我不想讓它變得更糟)。

回答

3

試試這個:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    boolean res = mScaleGestureDetector.onTouchEvent(event); 
    if (!mScaleGestureDetector.isInProgress()) { 
     res = mGestureDetector.onTouchEvent(event); 
    } 
    return res; 
} 
+0

這正是我要做的事。問題是,你不能在同一時刻將兩個手指放在屏幕上。你會放一根手指,然後再放一根手指。如果在此期間你的第一根手指稍稍移動 - 那就是「onScroll」。 –

+0

所以在onScroll方法中添加一些閾值 – pskink

+0

有一些門檻。我現在正在調整它,但它似乎也不是一個好的解決方案。 –

相關問題