导入

implementation 'com.github.bumptech.glide:glide:3.7.0'

样式类

import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.RectF;import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;public class GlideRoundTransform extends BitmapTransformation {    private static float radius = 0f;    /**     * 构造函数 默认圆角半径 4dp     *     * @param context Context     */    public GlideRoundTransform(Context context) {        this(context, 4);    }    /**     * 构造函数     *     * @param context Context     * @param dp 圆角半径     */    public GlideRoundTransform(Context context, int dp) {        super(context);        radius = Resources.getSystem().getDisplayMetrics().density * dp;    }    @Override    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {        return roundCrop(pool, toTransform);    }    private static Bitmap roundCrop(BitmapPool pool, Bitmap source) {        if (source == null) return null;        Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);        if (result == null) {            result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);        }        Canvas canvas = new Canvas(result);        Paint paint = new Paint();        paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));        paint.setAntiAlias(true);        RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight());        canvas.drawRoundRect(rectF, radius, radius, paint);        return result;    }    @Override    public String getId() {        return getClass().getName() + Math.round(radius);    }}

使用

Glide.with(context)                    .load(url)                    .transform(new CenterCrop(context),new GlideRoundTransform(context))                    .diskCacheStrategy(DiskCacheStrategy.ALL)                    .placeholder(R.mipmap.ic_launcher)                    .dontAnimate()                    .crossFade()                    .into(ImageView);

更多相关文章

  1. android Junit demo
  2. 《Android系统学习》之JAVA与C混合编程——JNI
  3. androidx.lifecycle.Transformations函数分析
  4. Android(安卓)camera: Metadata\Image从HAL到framework
  5. Android(安卓)Audio代码分析14 - testPlaybackHeadPositionIncre
  6. Android端实现图标带提示数字功能
  7. Android如何调用webservice 以及错误解决汇总
  8. Android(安卓)ListView滑动回弹——overScrollBy
  9. org.codehaus.jackson.map.JsonMappingException: No suitable c

随机推荐

  1. 如果不使用OAuth - PHP库,如何使用OAuth和
  2. 提交动态复选框表单并成对获取值
  3. It saves without an error, but it stil
  4. 单引号,双引号,javascript,HTML,转义字符
  5. PHP 网站模板核心类
  6. 如何在php数组中获取php键值
  7. WordPress注册和用户注册是分开的
  8. Php简单的html dom删除特定类的div
  9. 豆瓣的账号登录及api操作
  10. cenos下配置Apache+PHP最新版7.1.6+MySQL