Android 圆形头像


使用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