1

I'm looking to get some code to work where on double tap the canvas gets restored.

At the moment, I have:

    @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);
    }

However, at the moment it reads any gesture and it restores the screen. I only want it to restore on a double tap gesture.

I have tried to get this to work: Android: How to detect double-tap? but so far I've failed.

Thanks for any help :)

Community
  • 1
  • 1
iRushnikov
  • 27
  • 1
  • 5

1 Answers1

0

OK, this is clumsy, but try the following:

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);
}
Shade
  • 9,936
  • 5
  • 60
  • 85