自定义Glide

package com.sibei.lumbering.utils;
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;import androidx.annotation.NonNull;public class GlideRoundTransform  extends BitmapTransformation {private static float radius = 0f;public GlideRoundTransform() {this(4);}public GlideRoundTransform(int dp) {super();this.radius = Resources.getSystem().getDisplayMetrics().density * dp;}@Overrideprotected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {//变换的时候裁切Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight);return roundCrop(pool, bitmap);}@Overridepublic void updateDiskCacheKey(MessageDigest messageDigest) {}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);RectF rectRound = new RectF(0f, 100f, source.getWidth(), source.getHeight());canvas.drawRect(rectRound, paint);return result;}
}

GlideUtil

public class GlideUtils {private Context context;public GlideUtils(Context context){this.context = context;}public void load(String url, ImageView iv){Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv);}public void load(int url, ImageView iv){Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv);}public void load(Object url, ImageView iv){Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv);}public void loadCire(Object url, ImageView iv){//设置图片大小RoundedCorners roundedCorners = new RoundedCorners(15);//通过RequestOptions扩展功能,RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).apply(options).into(iv);}public static RequestBuilder<Drawable> GlideWithPlaceHolder(Context context, Object object,int radius) {return Glide.with(context).load(object).diskCacheStrategy(DiskCacheStrategy.RESOURCE).apply(new RequestOptions().placeholder(R.drawable.no_banner).dontAnimate().transform(new GlideRoundTransform(radius)));}

Glide控制显示4个角相关推荐

  1. Glide控制显示图片上方2个圆角(或4个都是圆角)

    自定义Glide package com.wintec.huashang.ui;import android.content.res.Resources; import android.graphic ...

  2. html设置文字超过字数_html文本控制显示字数超出用省略号的方法

    html文本控制显示字数超出的方法怎么解决?也就是文字溢出控制显示字数,table文字溢出控制td显示字数 看到标题你一定很轻易就会想到截断文字加省略号"..."的做法.哈哈,就是 ...

  3. element el-popover 使用v-if 控制显示/隐藏,当条件变化时,里面有部分内容无法显示

    先上效果图: 贴上我的代码: <span v-if="!isBin" class="chat-btn"><el-popoverv-if=&qu ...

  4. element 点击控制expend的显示隐藏_四、ArcGIS Runtime SDK for iOS 100.X教程系列之图层控制显示隐藏...

    一个图层服务上多个图层时,结合服务的链接地址访问查看详细信息进行代码编写会更方便,形如以下这个arcgis服务: http://arcgis.wuhanrt.cn:6080/arcgis/rest/s ...

  5. vue实现部分页面导入底部 vue配置公用头部、底部,可控制显示隐藏

    vue实现部分页面导入底部 vue配置公用头部.底部,可控制显示隐藏 在app.vue文件里引入公共的header 和 footer header 和 footer 默认显示,例如某个页面不需要显示h ...

  6. el-tooltip的使用(根据条件控制显示)

    el-tooltip根据条件控制显示 一.列表型 代码如下: <template><div><ul><li v-for="(item, index) ...

  7. Vue el-table-column根据行数据添加button和修改对应数据and控制显示条件

    插槽详解理解 行内添加button修改某行数据 表格代码 <el-table-column label="操作"><template slot-scope=&qu ...

  8. 毕业设计 —— 基于STM32手势控制显示系统的设计

    目录 一.前言 二.项目背景及资源分享 三.项目简介 1.项目名称 2.系统框架 3.功能简介 4.控制核心 5.最小系统: 6.外围模块: 四.相关设计原理及框图 1.系统设计的原理 2.手势识别原 ...

  9. FPGA实现图像任意位置显示,串口协议控制显示位置,提供工程源码和技术支持

    目录 1.图像任意位置显示理论基础 2.设计思路和架构 3.OV5640图像采集 4.图像DDR3三帧缓存 5.图像任意位置输出显示 6.串口协议控制显示位置 7.vivado工程介绍 8.上板调试验 ...

最新文章

  1. Java常用垃圾收集器
  2. 【直播讲座】用友摩天联合光环国际,听国学学项目管理
  3. 禁用viewstate怎么还保存状态?
  4. EF4.1中诡异的GUID为空问题
  5. Linux 脚本、 正则表达式 等
  6. 演练 模拟银行账户业务
  7. python十大实例_Python练习实例100例(从简入难)96-100
  8. PageAdmin建站系统模板制作教程1:Razor简介
  9. mysql事件的使用-开启与关闭事件
  10. DFS HDOJ 2181 哈密顿绕行世界问题
  11. 转 Linux查看文件编码格式及文件编码转换
  12. /proc/config.gz 是什么
  13. 2020移动apn接入点哪个快_设置APN教程
  14. java websocket广播_使用 Spring 对 Websocket 进行简单的消息广播和单播
  15. 使用Jquery完成动态表格的功能
  16. 科技百咖 | 神州云动CEO孙满弟:精细化产品与服务是中国CRM发展的根本
  17. 2021珠海数据开放创新应用大赛今日启动 征集创意创新应用 争夺数据最强大脑
  18. android okhttp get 请求带参数
  19. 消防器材RFID固定资产管理系统
  20. WebSocket是什么?为什么能持久连接?

热门文章

  1. docker安装Jenkins+BlueOcean
  2. Jenkins安装目录说明
  3. 基于Docker本地运行k8s(单节点)
  4. 【PDF收藏】docker k8s文档整理
  5. Linux正则表达式判断是否是数字示例
  6. javap分析字符串拼接执行流程
  7. JVM调优:常见垃圾回收算法
  8. Python jsonpath库的使用:解析json并将结果保存到文件
  9. jvm一个线程的成本
  10. Spring MVC入门示例教程--表单处理