Bitmap myCoolBitmap = ... ; // <-- Your bitmap you want rounded
int w = myCoolBitmap.getWidth(), h = myCoolBitmap.getHeight();
Мы должны убедиться, что наши закругленные углы в большинстве случаев имеют альфа-канал
Bitmap rounder = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(rounder);
Мы собираемся применить эту краску в конечном итоге, используя режим x-porter-duff.Это позволит нам перезаписывать только определенные пиксели.Красный является произвольным.Это может быть любой непрозрачный цвет (альфа = 255)
Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
xferPaint.setColor(Color.RED);
Мы просто повторно используем xferPaint, чтобы нарисовать округлую коробку нормального вида, 20.f - это величина, которую мы округляем.
canvas.drawRoundRect (new RectF (0,0, w, h), 20.0f, 20.0f, xferPaint);
Теперь мы применяем «волшебный соус»к краске
xferPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
Now apply this bitmap ontop of your image:
canvas.drawBitmap(myCoolBitmap, 0,0, null);
canvas.drawBitmap(rounder, 0, 0, xferPaint);