GitHub:
package com.example.administrator.testt;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Path;import android.graphics.Rect;import android.graphics.Region;import android.util.AttributeSet;public class RoundImageView extends android.support.v7.widget.AppCompatImageView{ private Bitmap mBitmap; private Rect mRect = new Rect();//Rect=Rectangle private PaintFlagsDrawFilter pdf = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG); private Paint mPaint = new Paint(); private Path mPath = new Path(); public RoundImageView(Context context, AttributeSet attributeSet) { super(context,attributeSet); init(); } public void setBitmap(Bitmap bitmap) { this.mBitmap = bitmap; } private void init(){ mPaint.setStyle(Paint.Style.STROKE); mPaint.setFlags(Paint.ANTI_ALIAS_FLAG); mPaint.setAntiAlias(true); // 抗锯齿 } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (mBitmap == null) { return; } mRect.set(0, 0, getWidth(), getHeight()); canvas.save(); canvas.setDrawFilter(pdf); mPath.addCircle(getWidth()/2,getWidth()/2,getHeight()/2,Path.Direction.CCW); canvas.clipPath(mPath, Region.Op.REPLACE); canvas.drawBitmap(mBitmap, null, mRect, mPaint);//绘制图 canvas.restore(); }}