You should avoid creating a new paint every time though, which is why I
mentioned the drawColor() alternative.


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

> Thanks for the hint!  Work's perfectly.
>
>          paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
>         canvas.drawPaint(paint);
>
>
> On Monday, November 26, 2012 11:31:12 AM UTC+11, Romain Guy (Google) wrote:
>>
>> 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 android-d...@**googlegroups.com
>>> To unsubscribe from this group, send email to
>>> android-developers+**[email protected]
>>> For more options, visit this group at
>>> http://groups.google.com/**group/android-developers?hl=en<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




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