1

ダブルタップでキャンバスが復元されるコードを探しています。

現時点では、私は持っています:

    @Override
    public void onTouchEvent(MotionEvent event) {

        float x = event.getX();
        float y = event.getY();
        SurfaceHolder holder = getSurfaceHolder();
        Canvas canvas = null;

        try {
            canvas = holder.lockCanvas();
            if (canvas != null) {
                // Enter it all here
                canvas.restore();


            }
        } finally {
            if (canvas != null)
                holder.unlockCanvasAndPost(canvas);
        }
        super.onTouchEvent(event);
    }

ただし、現時点ではジェスチャーを読み取り、画面を復元します。ダブルタップジェスチャーでのみ復元したい。

私はこれを機能させようとしました: Android: ダブルタップを検出するには? しかし、これまでのところ私は失敗しています。

助けてくれてありがとう:)

4

1 に答える 1

0

OK、これは不器用ですが、次のことを試してください。

private boolean singleTapped = false;
private long lastTapTime = 0;
private long doubleTapInterval = 1000;

@Override
public void onTouchEvent(MotionEvent event) {
    if (!singleTapped) {
        singleTapped = true;
        lastTapTime = System.currentTimeMillis();
        super.onTouchEvent (event);
        return;
    }

    long tapInterval = System.currentTimeMillis() - lastTapTime;
    if (tapInterval <= doubleTapInterval) {
        float x = event.getX();
        float y = event.getY();
        SurfaceHolder holder = getSurfaceHolder();
        Canvas canvas = null;

        try {
            canvas = holder.lockCanvas();
            if (canvas != null) {
            // Enter it all here
            canvas.restore();


            }
        } finally {
            if (canvas != null)
            holder.unlockCanvasAndPost(canvas);
        }
    }

    super.onTouchEvent(event);
}
于 2013-03-08T13:08:50.933 に答える