Surfaces are double (or even triple) buffered. You are indeed not getting
in your canvas what's currently on screen but what was on screen a frame
ago. The easiest way to clear the surface is to call canvas.drawColor(0,
PorterDuff.Mode.CLEAR) (you can also use 0xff000000, PorterDuff.Mode.SRC).


On Sun, Nov 25, 2012 at 3:42 PM, Johan <[email protected]> wrote:

> 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




-- 
Romain Guy
Android framework engineer
[email protected]

-- 
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