I have some strange behaviour when repainting the screen with my live 
wallpaper.  I'm scaling an image and drawing it to the screen, but on each 
draw (as the image is scaled smaller than the previous draw), I can still 
see the previous image below the new image.
How do I clear the previous image out so that only the new scaled image is 
displayed?

This is my code:

private final Runnable mDraw = new Runnable() {
            public void run() {
                draw();
            }
        };

        void draw() {
        SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
if(canvas != null) {
this.paintScreen(canvas);
}
}finally {
if(canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
mHandler.removeCallbacks(mDraw);
if (mVisible) {
mHandler.postDelayed(mDraw, 60000);
}
        }

Every minute my paintSurface function scales a bitmap (image loaded from 
resources), then uses canvas.drawBitmap to put the image on the screen.  As 
I understand from the documentation, holde.lockCanvas()is not supposed to 
contain the image currently on the screen and every pixel has to be 
drawn... this doesn't seem to be the case since the previous pixels are 
obviously under the new pixels.

Thanks,
J
(26 Sept '12 - 10:45 AM)

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to