package 包名;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;
import com.bumptech.glide.load.resource.bitmap.TransformationUtils;import java.security.MessageDigest;public class GlideRoundTransform extends BitmapTransformation {//    private static float radius = 0f;
//
//    public GlideRoundTransform(Context context) {
//        this(context, 4);
//    }
//
//    public GlideRoundTransform(Context context, int dp) {
//        super(context);
//        this.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 4.0 之前的处理方式的//---------- 下面是 glide 4.0 之后的处理方式private static float radius = 0f;public GlideRoundTransform(Context context) {this(context, 4);}public GlideRoundTransform(Context context, int dp) {
//        super(context);this.radius = Resources.getSystem().getDisplayMetrics().density * dp;}@Overrideprotected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight);return roundCrop(pool, bitmap);}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;}public String getId() {return getClass().getName() + Math.round(radius);}@Overridepublic void updateDiskCacheKey(MessageDigest messageDigest) {}
}

glide 4.0 之后 和圆角裁剪CenterCrop冲突相关推荐

  1. Glide 4.0 相比 Glide 3.0 及使用详解

    1.变化 单独列出的更改太多,但这里有一些亮点: 新的文档,用户可以通过提交请求到Glide's gh-pages分支贡献. 用户可以添加新类型或自定义选项集来轻松地自定义Glide流畅的API. 大 ...

  2. Android 7.0下拍照和裁剪图片

    Android 7.0下拍照和裁剪图片 最近,公司的APP集中爆发了头像上传中拍照或照片裁剪的bug,让我才意识到及时学习Android新特性是多么重要,一个过去式的APP是无法一直满足日益变化的新需 ...

  3. lg g6 android 9,LG G6再无秘密:Android 7.0+18:9圆角屏

    原标题:LG G6再无秘密:Android 7.0+18:9圆角屏 LG G6这几天是比较安静了,因为它也实在是没有什么值得继续爆料的了,根据此前消息,LG G6将在2月26日开幕的MWC大会首日正式 ...

  4. Glide4.7加载图片RoundedCorners跟CenterCrop冲突问题解决

    Glide加载图片时需要设置CenterCrop跟RoundedCorners时需要用到RequestOptions的transforms方法 单个设置时后面的设置的会覆盖前面设置的 如: new R ...

  5. android 缺半圆形头像,Android 自定义Glide实现圆形头像效果(圆角,正常,黑白,圆形效果)...

    /** * Glide 图片加载工具类 */ /** * diskCacheStrategy参数补充 * * DiskCacheStrategy.NONE 表示不缓存任何内容. * * DiskCac ...

  6. 手机裁剪圆角图片_iOS高效图片圆角裁剪方法

    自定义裁剪算法 - (UIImage *)dealImage:(UIImage *)img cornerRadius:(CGFloat)c { // 1.CGDataProviderRef 把 CGI ...

  7. 图文理解 Spark 3.0 的动态分区裁剪优化

    Spark 3.0 为我们带来了许多令人期待的特性.动态分区裁剪(dynamic partition pruning)就是其中之一.本文将通过图文的形式来带大家理解什么是动态分区裁剪. Spark 中 ...

  8. creo 6.0—11:圆角、倒角绘制,文本(文字)创建

    11 creo圆角.倒角绘制,文本(文字)创建 1.圆角绘制: 首先绘制一个矩形,对该矩形进行圆角的绘制: 圆角有以下几种方式形成 首先,最基本的方式为: 1.两边选定式--圆形 按钮 分别 左键点击 ...

  9. android Glide 4.0图片加载失败

    项目中查看大图,并可以拖拽缩放,但是在加载图片等时候有些图片不能加载出来,报了一个错误: class com.bumptech.glide.load.engine.GlideException: Fa ...

  10. Glide加载图片设置圆角和占位图片(加载失败)

    public static RequestOptions getRequestOptions() {RequestOptions mRequestOptions = RequestOptions.ci ...

最新文章

  1. Linux系统命令sort详解
  2. python读取.so_Python入门-编译安装Python3教程
  3. hihocoder #1136 : Professor Q's Software
  4. Android_(菜单)选项菜单
  5. 总结从linux - windows 上(GCC与MSVC 2015) 移植C或者C++代码时候遇到的编译和链接问题
  6. “桌面日历”记录的事件居然是看某某视频……
  7. Python高能小技巧:了解bytes与str的区别
  8. 软件详细设计说明书_软件测试的基本理论 笔记
  9. 只属于你我的共同记忆
  10. java.lang.ClassFormatError
  11. CentOS_mini下安装docker 之 安装docker CE
  12. ubuntu 12.04 下安装 PyTesser 进行OCR识别 - 从波 - 博客园
  13. php书店网站模板源代码_网上书店整套html模板
  14. Cadence PSpice 仿真1: 三极管传输特性曲线直流仿真图文教程
  15. 学习笔记-spo0lsv病毒分析
  16. 使用 Python 在 2 秒内评估国际象棋位置
  17. 用ECS做HexMap:高地与阶梯
  18. java中文乱码终极解决方案
  19. js利用正则验证手机号是否合法
  20. 买低配车,更保值?!坊间有一句戏言:买车都要买低配

热门文章

  1. 用一个键盘和鼠标控制两台双显示器计算机的最佳方法是什么?
  2. 若依框架前端Vue项目分析实战
  3. EEGLAB如何进行ERPs数据处理你都会了吗?看这里保证你一劳永逸的get ERPs数据处理技能
  4. hadoop菜鸟教程 Hadoop学习资料(云计算学习电子书)
  5. idea设置护眼主题
  6. crmeb java单商户源码java二开文档部署文档H5商城部署文档【5】
  7. error:“Component name “Home“ should always be multi-word vue/multi-word-component-names“
  8. go程序设计语言学习 popCount
  9. 黑苹果intel网卡驱动方法
  10. 3dm下载的都是linux游戏,3DM的游戏怎么下载和安装(没智商的小白用户)