天天看點

圓角圖檔工具類

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;

/**
 * Created by xiexincheng on 2016/7/18.
 */
public class CircularHeadUtils {
public static Bitmap toCircularHead(Bitmap bitmap) {
//取得圖檔的寬高
int width = bitmap.getWidth();
int height = bitmap.getHeight();
//正方形的邊長(取寬和高中最短的作邊長)
int r = width > height ? height : width;
//建構一個bitmap
Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//new一個Canvas,在output上畫圖
Canvas canvas = new Canvas(output);
Paint paint = new Paint();
//正方形
RectF rectF = new RectF(0, 0, r, r);
//抗鋸齒
paint.setAntiAlias(true);
//畫圓角矩形(當x方向和y方向上的長度相等時,就是一個圓)
canvas.drawRoundRect(rectF, r / 2, r / 2, paint);
//設定當兩個圖形相交時的模式,為SRC_IN,代表保留相交部分的上層,去掉其餘部分
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
//将圖檔畫在output上
canvas.drawBitmap(bitmap, null, rectF, paint);
return output;
}
}
      
/**
 * 調用方法
 */
imageView = (ImageView) findViewById(R.id.image);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.bit);
imageView.setImageBitmap(CircularHeadUtils.toCircularHead(bitmap));