package com.datonicgroup.narrate.app.ui; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.CenterCrop; /** * Created by timothymiko on 12/21/14. */ public class RoundedCornerTransformation extends CenterCrop { private int cornerSize; public RoundedCornerTransformation(Context context, int cornerResId) { super(context); cornerSize = context.getResources().getDimensionPixelSize(cornerResId); } public RoundedCornerTransformation(Context context) { super(context); } public RoundedCornerTransformation(BitmapPool bitmapPool) { super(bitmapPool); } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int width, int height) { Bitmap transformed = super.transform(pool, toTransform, width, height); Bitmap output = null; //pool.get(width, height, toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888); if ( output == null ) output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, width, height); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); paint.setColor(0xFFFFFFFF); paint.setStyle(Paint.Style.FILL); canvas.drawARGB(0, 0, 0, 0); canvas.drawRoundRect(rectF, cornerSize, cornerSize, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(transformed, rect, rect, paint); transformed.recycle(); return output; } @Override public String getId() { return "com.datonicgroup.narrate.app.RoundedTransformation"; } }