使用Paint.setXfermode()
可以设置画笔的绘制模式,使用一个圆与目标图片取交集即可得到一个圆形图片。
public Bitmap toRoundBitmap(Bitmap bitmap){
int width = bitmap.getWidth();
int height = bitmap.getHeight();
// 创建一个空Bitmap
Bitmap backgroundBmp = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(backgroundBmp);
int r = Math.min(width,height);
RectF rect = new RectF(0,0,r,r);
// Canvas上绘制一个圆
canvas.drawRoundRect(rect, r/2, r/2, paint);
// 设置画笔mode为交集
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
// Canvas上绘制图片,与之前Canvas上的内容取交集
canvas.drawBitmap(bitmap, null, rect, paint);
return backgroundBmp;
}
图片取自系统模拟器API Demo