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] <javascript:>
> > 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]<javascript:>
>> To unsubscribe from this group, send email to
>> [email protected] <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>
>
>
>
> --
> Romain Guy
> Android framework engineer
> [email protected] <javascript:>
>
>
--
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