创建一个圆形头像框

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();
    }
}

 

posted @ 2018-10-11 11:03  Umbrellaox  阅读(712)  评论(0编辑  收藏  举报