我有一個帶有GestureDetector和擴展SimpleOnGestureListener的GLSurfaceView。我需要能夠通過快速點擊來在表面視圖中選擇多個項目。因爲onSingleTapConfirmed太慢了,所以我忽略了onSingleTapUp以快速檢測觸摸。現在的問題是,如果表面視圖上的兩個項目彼此靠近並且用戶快速點擊另一個,然後對第一個項目調用onSingleTapUp方法,但對第二個項目不調用onSingleTapUp方法。第二個調用onDoubleTap方法,不管它是否被覆蓋。禁用雙擊或檢測第二個水龍頭位置
爲了解決這個問題,我試圖簡單地不重寫onDoubleTap方法,我也試圖在重寫的onDoubleTap中不做任何事情,並返回false。既不能解決問題。 onSingleTapUp方法仍不會被第二次點擊調用。
我決定嘗試檢測onDoubleTap方法中的第二次敲擊並從那裏選擇項目。與此相關的問題是從onDoubleTap返回的動作事件包含「雙擊的第一個水龍頭的向下運動事件」。 - http://developer.android.com/reference/android/view/GestureDetector.OnDoubleTapListener.html
有什麼辦法可以禁用雙擊,改變雙擊時間,所以它永遠不會開火,將雙擊半徑改變爲非常小的東西,或者獲得onDoubleTap方法中的第一個水龍頭位置?
這裏是我的SimpleOnGestureListener:
public class ViewGestureListener extends
GestureDetector.SimpleOnGestureListener {
private ViewRenderer renderer;
private GLSurfaceView surfaceView;
public ViewGestureListener(GLSurfaceView surfaceView,
ViewRenderer renderer) {
this.renderer = renderer;
this.surfaceView = surfaceView;
}
// Pan
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
renderer.pan(distanceX, distanceY);
surfaceView.requestRender();
return true;
}
// Double touch and release
@Override
public boolean onDoubleTap(MotionEvent e) {
// Note: e.getX() doesn't return the second tap's location!
renderer.singleTouch(e.getX(), e.getY());
surfaceView.requestRender();
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
renderer.singleTouch(e.getX(), e.getY());
surfaceView.requestRender();
return true;
}
}
謝謝, 馬特