1

I'm trying to draw a bitmap into surfaceView I can successfully draw but I need to move that bitmap around the screen based on some other user movements but when I set

 canvas.drawColor(Color.TRANSPARENT);
 canvas.drawBitmap(bitmap, left, top, null);

It draws same bitmap multiple times in screen.

enter image description here

But when I do this way

 canvas.drawColor(Color.GREEN);
 canvas.drawBitmap(bitmap, left, top, null);

It works correctly draws just one bitmap and moves it , but I need transparent background not colored.

enter image description here

CODE

public class DotsSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder holder; private boolean created; Bitmap bitmap;

@Override
public void surfaceCreated(SurfaceHolder holder) {
    // draw();
    created = true;
}

@Override
// This is always called at least once, after surfaceCreated
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    // draw();
    created = true;
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

}

public DotsSurfaceView(Context context) {
    super(context);
    holder = getHolder();         
    holder.addCallback(this);
    holder.setFormat(PixelFormat.TRANSPARENT);
    Drawable drawable = ARTrackingActivity.contexti.getDrawable(R.drawable.ic_tune_black_24px);
    bitmap =Utils.drawableToBitmap(drawable);
}

public void draw(float left, float top) {
    Canvas canvas = null;
    try {
        canvas = holder.lockCanvas();

        synchronized (holder) {
            draw2(canvas, left, top);
        }
    } finally {
        if (canvas != null) {
            holder.unlockCanvasAndPost(canvas);
        }
    }
}


public void draw2(Canvas canvas, float left, float top) {
    if (created) {
        canvas.drawColor(Color.TRANSPARENT);
        canvas.drawBitmap(bitmap, left, top, null);
    }
}

}

G.L
  • 139
  • 1
  • 4
  • 16

0 Answers0