android 圆角图标 和不规则圆角(边框)
1.png
需要求就是如图 所示
将 原图 变成 圆角 或者不规则的形状,应为桌面主题需要用到。
当然 方法很多 这边提供如下方法。
// 圓角
private Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
Bitmap roundBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(roundBitmap);
int color = 0xff424242;
Paint paint = new Paint();
Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
RectF rectF = new RectF(rect);
float roundPx = 50;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return roundBitmap;
}
// 不规则角
private Bitmap getRoundedCornerBitmap(Bitmap bitmap, Bitmap bg) {
Paint paint = new Paint();
float scaleX = (float) (bitmap.getWidth() * 1.0 / bg.getWidth()) + 0.1f;
float scaleY = (float) (bitmap.getHeight() * 1.0 / bg.getHeight()) + 0.1f;
Bitmap scaleBitmap = scaleBitmap(bg, scaleX, scaleY);
Bitmap roundBitmap = Bitmap.createBitmap(scaleBitmap.getWidth(), scaleBitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(roundBitmap);
paint.setAntiAlias(true);
canvas.drawBitmap(scaleBitmap, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, scaleBitmap.getWidth() / 2 - bitmap.getWidth() / 2, scaleBitmap.getHeight() / 2
- bitmap.getHeight() / 2, paint);
return roundBitmap;
}