可以理解為按照形狀剪下圖形。
具體步驟看下面程式碼中的註釋。
Bitmap bitmap;
@Override
public void draw(Canvas canvas) {
//儲存還沒有繪製之前的圖層
int j = canvas.saveLayer(new RectF(0,0,getRight(),getBottom()),null,Canvas.ALL_SAVE_FLAG);
super.draw(canvas);
//初始化畫筆、蒙版bitmap和畫布
if(bitmap == null) {
paint = new Paint();
bitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas1 = new Canvas(bitmap);
//在蒙版上畫圓,也可以畫別的形狀
canvas1.drawCircle(getWidth()/2,getWidth()/2,getWidth()/2,paint);
}
//用蒙版和原圖剪下,Xfermode說明可以參照我另外一篇文章
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(bitmap,0,0,paint);
//恢復之前的圖層,要不然背景是黑色的
canvas.restoreToCount(j);
}
複製程式碼