draw transparent shape onto canvas

16,239

Solution 1

to draw transparent shape follow this code

Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 

//draw any shape, here I am drawing Rect shape
Rect rect=new Rect(left, top, right, bottom);
canvas.drawRect(rect,paint);

Solution 2

You should make the white color transparent:

public void draw(Canvas canvas)
 {
  final RectF rectF = new RectF();
  final Paint paint = new Paint();
  paint.setARGB(128, 255, 255, 255);

  rectF.set(0,0, getMeasuredWidth(), getMeasuredHeight());

  canvas.drawRect(rectF, paint);
}
Share:
16,239
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    I have a background image that takes up the whole screen. I am drawing canvas over the background and setting its color to white so you can't see the image yet. What I am trying to achieve is to then draw a transparent shape onto the white canvas and have the background image show through where that shape is. I am using a surfaceView and implementing SurfaceView.Callback.

  • Sagar Devanga
    Sagar Devanga about 7 years
    it leave the area black
  • Ilia
    Ilia over 2 years
    PorterDuff.Mode.CLEAR doesn't work with hardware acceleration, use View.LAYER_TYPE_SOFTWARE stackoverflow.com/a/44607874/3315714