How to erase previous drawing on Canvas?

Viewed 49893

I have a background image (a map) on which I need to regularly draw the you-are-here icon. I use Canvas to draw the icon on top of the map. Assuming that the drawing process is triggered on button click (see code below), how can I erase the previous drawing?

private void displayUserPos(Point userPos) {
    Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.ic_yah);
    canvas.drawBitmap(marker, (float)userPos.getX(), (float)userPos.getY(), null);
    imgView.setImageBitmap(fmOverlay);
}
7 Answers
overlayBitmap.eraseColor(Color.TRANSPARENT);

This simply sets an existing Bitmap to all transparent.

I use this to "clear" a Bitmap object that I use to overlay on top of another to show a cropping window.

Try as below,it can be used to clear the canvas totally.

Declaration should be like this,

ArrayList<Pair<Path, Paint>> paths = new ArrayList<Pair<Path, Paint>>();
ArrayList<Pair<Path, Paint>> undonePaths = new ArrayList<Pair<Path, Paint>>();

and while clearing use

    undonePaths.clear();
    paths.clear();
    invalidate();
Related