How to round an image with Glide library?

前端 未结 22 1863
悲哀的现实
悲哀的现实 2020-11-28 00:46

So, anybody know how to display an image with rounded corners with Glide? I am loading an image with Glide, but I don\'t know how to pass rounded params to this library.

22条回答
  •  心在旅途
    2020-11-28 01:17

    Here is a more modular and cleaner way to circle crop your bitmap in Glide:

    1. Create a custom transformation by extending BitmapTransformation then override transform method like this :

    For Glide 4.x.x

    public class CircularTransformation extends BitmapTransformation {
    
    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        RoundedBitmapDrawable circularBitmapDrawable =
                RoundedBitmapDrawableFactory.create(null, toTransform);
        circularBitmapDrawable.setCircular(true);
        Bitmap bitmap = pool.get(outWidth, outHeight, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        circularBitmapDrawable.setBounds(0, 0, outWidth, outHeight);
        circularBitmapDrawable.draw(canvas);
        return bitmap;
        }
    
    @Override
    public void updateDiskCacheKey(MessageDigest messageDigest) {}
    
    }
    

    For Glide 3.x.x

    public class CircularTransformation extends BitmapTransformation {
    
    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        RoundedBitmapDrawable circularBitmapDrawable =
                RoundedBitmapDrawableFactory.create(null, toTransform);
        circularBitmapDrawable.setCircular(true);
        Bitmap bitmap = pool.get(outWidth, outHeight, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        circularBitmapDrawable.setBounds(0, 0, outWidth, outHeight);
        circularBitmapDrawable.draw(canvas);
        return bitmap;
        }
    
    @Override
    public String getId() {
        // Return some id that uniquely identifies your transformation.
        return "CircularTransformation";
        }
    
    }
    
    1. Then set it in Glide builder where you need it:
    Glide.with(yourActivity)
       .load(yourUrl)
       .asBitmap()
       .transform(new CircularTransformation())
       .into(yourView);
    

    Hope this helps :)

提交回复
热议问题