可以理解為按照形狀剪切圖形又谋。
具體步驟看下面代碼中的注釋。
Bitmap bitmap;
@Override
public void draw(Canvas canvas) {
//保存還沒(méi)有繪制之前的圖層
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說(shuō)明可以參照我另外一篇文章
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(bitmap,0,0,paint);
//恢復(fù)之前的圖層火焰,要不然背景是黑色的
canvas.restoreToCount(j);
}