这周的安卓作业要做一个音乐播放器, 而图片那块需要添加音乐的封面, 获取到的封面为矩形图片, 如果要像网易云一样做一个唱片风格的封面需要将矩形图片绘制成圆形图片, 在StackOverflow上查找得到相关的方法,如下:
public Bitmap getRoundedShape(Bitmap scaleBitmapImage) {
int targetWidth = 50;
int targetHeight = 50;
Bitmap targetBitmap = Bitmap.createBitmap(targetWidth,
targetHeight,Bitmap.Config.ARGB_8888); // 创建目标图片
Canvas canvas = new Canvas(targetBitmap); // 新建一块画布,即将绘制目标图片
Path path = new Path(); // 新建路径
path.addCircle(((float) targetWidth - 1) / 2,
((float) targetHeight - 1) / 2,
(Math.min(((float) targetWidth),
((float) targetHeight)) / 2),
Path.Direction.CCW); // 绘制圆形路径
canvas.clipPath(path); // 根据路径切割画布
Bitmap sourceBitmap = scaleBitmapImage;
canvas.drawBitmap(sourceBitmap,
new Rect(0, 0, sourceBitmap.getWidth(),
sourceBitmap.getHeight()),
new Rect(0, 0, targetWidth, targetHeight), null); // 将原图绘制到目标图中
return targetBitmap;
}
通过该方式能快捷的将正方形的图片绘制成圆形图片, 在测试中发现目标图片中存在比较严重的锯齿现象, 一个解决方案为将目标图片的宽和高设置的足够大, 完成绘制后将图片缩放至所需要的大小即可.