给bitmap添加一个背景,实现centerCrop效果
private Bitmap getCenterCropBitmap(int fillColor,int roundWidth,int roundHeight, Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(roundWidth, roundHeight, Bitmap.Config.ARGB_8888);
Canvas canvas =new Canvas(output);
RectF outerRect =new RectF(0,0, roundWidth, roundHeight);
Paint paint =new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(fillColor);
paint.setStyle(Paint.Style.FILL);
canvas.drawRoundRect(outerRect,0,0, paint);
int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();
float oldsc = roundWidth / (float) roundHeight;
float newsc = bitmapWidth / (float) bitmapHeight;
if (oldsc > newsc) {
int newHei = roundHeight;
int newWid = newHei * bitmapWidth / bitmapHeight;
Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei,true);
if (newBit !=null) {
canvas.drawBitmap(newBit, (roundWidth - newWid) /2,0, paint);
}
}else if (oldsc < newsc) {
int newWid = roundWidth;
int newHei = newWid * bitmapHeight / bitmapWidth;
Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei,true);
if (newBit !=null) {
canvas.drawBitmap(newBit,0, (roundHeight - newHei) /2, paint);
}
}else {
int newWid = roundWidth;
int newHei = newWid;
Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei,true);
if (newBit !=null) {
canvas.drawBitmap(newBit,0,0, paint);
}
}
canvas.save();
canvas.restore();
return output;
}