安卓中圆形图片的实现
1.加载网络图片时,可以使用 xUtils 框架
ImageManager m = x.image();
ImageOptions.Builder builder = new ImageOptions.Builder();
builder.setCircular(true);// 设置圆形属性
ImageOptions options = builder.build();
m.bind(viewHolder.avatar, anchorEntity.getCover(), options);
2.根据现有的bitmap重新绘制一个圆形的图片
实现思路:从任意的矩形图片中心,获取一个正方形图片,这个正方形图片的边长是原图宽与高的最小值,然后将 这个正方形的图片绘制成圆形。
/**
* 获取圆形图像
*
* @param bitmap 原始图片
* @return
*/
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
final Paint paint = new Paint();
//保证是正方形,并且从中心画
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int min = Math.min(width, height);
int max = Math.max(width, height);
int x = 0;
int y = 0;
int squareWidth = 0;
int squareHeight = 0;
if (width < height) { // 宽小于高
squareWidth = squareHeight = width;
x = 0;
y = (height - width) / 2;
} else if (width > height) {// 宽大于高
squareWidth = squareHeight = height;
x = (width - height) / 2;
y = 0;
} else { // 宽等于高
squareWidth = squareHeight = width;
//squareWidth = squareHeight = height;
x = 0;
y = 0;
}
Bitmap bitmapSquare = Bitmap.createBitmap(bitmap, x, y, squareWidth, squareHeight);
Bitmap output = Bitmap.createBitmap(squareWidth, squareHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final Rect rect = new Rect(0, 0, squareWidth, squareHeight);
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
// 圆的半径
int radius = (int) squareWidth / 2;
canvas.drawRoundRect(rectF, radius, radius, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmapSquare, rect, rect, paint);
return output;
}