自定义圆形头像ImageView
public class RoundImageView extends ImageView {
private Bitmap mCircleBitmap;
private Canvas mCanvas;
private Paint mPaint;
public RoundImageView(Context context) {
super(context);
}
public RoundImageView(Context context, AttributeSet attrs) {
super(context, attrs);
mCircleBitmap = Bitmap.createBitmap(getDrawable().getIntrinsicWidth(), getDrawable().getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mCircleBitmap);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mCanvas.drawCircle(mCircleBitmap.getWidth() / 2, mCircleBitmap.getHeight() / 2, mCircleBitmap.getWidth() / 2, mPaint);
}
@Override
protected void onDraw(Canvas canvas) {
int layer = canvas.saveLayer(0, 0, mCircleBitmap.getWidth(), mCircleBitmap.getHeight(), null, Canvas.ALL_SAVE_FLAG);
super.onDraw(canvas);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(mCircleBitmap, 0, 0, mPaint);
canvas.restoreToCount(layer);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (mCircleBitmap != null && !mCircleBitmap.isRecycled()) {
mCircleBitmap.recycle();
mCircleBitmap = null;
}
}
}
XML如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.hiten.sun.demo001.RoundImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon"/>
</RelativeLayout>