当前位置: 首页 > news >正文

Glide 自定义圆角、铺满FitXY

在 Android 开发中,使用 Glide 来加载图片时,有时需要对图片进行特定的处理,比如设置圆角或者使图片完全填充到一个视图中(类似于 ImageView 的 scaleType 中的 FitXY)。以下是如何使用 Glide 来实现这些自定义需求的处理方案。

1. 自定义圆角

Glide 本身不直接支持圆角,但可以通过使用 Transformation 来实现。你可以使用 RoundedCorners 转换来添加圆角效果。例如:

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;Glide.with(context).load(url).apply(new RequestOptions().transform(new RoundedCorners(radius))).into(imageView);

这里的 radius 是圆角的半径。

2. 铺满 FitXY

Glide 默认情况下会尽可能保持图片的宽高比,但如果你需要像 ImageView 的 FitXY 那样铺满整个视图,可以通过自定义 Transformation 来实现。这通常涉及到重写图片的尺寸处理方式,使其完全匹配目标 ImageView 的尺寸。

你可以创建一个自定义的 Transformation 类来实现这一点:

import android.graphics.Bitmap;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
import com.bumptech.glide.load.Key;import java.security.MessageDigest;
/*** <p>* Description: [使用 BitmapTransformation 来实现图像的拉伸效果 (FitXY 的效果)]* </p>* // 使用 Glide 加载图片*         Glide.with(this)*                 .load(imgUrl)*                 .placeholder(R.drawable.default) // 占位图*                 .error(R.drawable.default) // 错误图*                 .transform(new FitXYTransformation (this), new GlideRoundTransformUtil(this, 3)) // 使用自定义的 FitXY 和圆角变换*                 .into(imageView);* ${tags}*/
public class FitXYTransformation extends BitmapTransformation {private static final String ID = "com.example.glide.FitXYTransformation";private static final byte[] ID_BYTES = ID.getBytes(Key.CHARSET);@Overrideprotected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {return Bitmap.createScaledBitmap(toTransform, outWidth, outHeight, false);}@Overridepublic boolean equals(Object o) {return o instanceof FitXYTransformation;}@Overridepublic int hashCode() {return ID.hashCode();}@Overridepublic void updateDiskCacheKey(MessageDigest messageDigest) {messageDigest.update(ID_BYTES);}
}

然后,使用这个自定义的 Transformation:

Glide.with(context).load(url).apply(new RequestOptions().transform(new FitXYTransformation())).into(imageView);

结合使用圆角和 FitXY

如果你需要同时应用圆角和 FitXY 效果,可以将两个转换结合起来:

Glide.with(context).load(url).apply(new RequestOptions().transform(new FitXYTransformation(), new RoundedCorners(radius))).into(imageView);

这样,图片首先会被缩放以铺满 ImageView,然后应用圆角效果。注意,这种组合可能会导致圆角不太明显,因为首先图片被缩放填充了整个视图。

通过这些方法,你可以灵活地使用 Glide 来满足不同的图片显示需求。

http://www.lryc.cn/news/508790.html

相关文章:

  • 蓝牙协议——音乐启停控制
  • Krita安装krita-ai-diffusion工具搭建comfyui报错没有ComfyUI_IPAdapter_plus解决办法
  • 四相机设计实现全向视觉感知的开源空中机器人无人机
  • LightGBM分类算法在医疗数据挖掘中的深度探索与应用创新(上)
  • JVM(Java虚拟机)的组成部分详解
  • jsp中的四个域对象(Spring MVC)
  • 计算机基础知识复习12.24
  • 如何使用vscode解决git冲突
  • 告别卡顿:CasaOS轻NAS设备安装Gopeed打造高效下载环境
  • Java 重写(Override)与重载(Overload)
  • HDFS与HBase有什么关系?
  • CentOS7下的vsftpd服务器和客户端
  • 全网最详细Gradio教程系列10——Blocks:底层区块类(下)
  • 嵌入式设备常用性能和内存调试指令
  • 数据库系统原理:数据恢复与备份策略
  • C++软件设计模式之装饰器模式
  • fpga系列 HDL:Quartus II PLL (Phase-Locked Loop) IP核 (Quartus II 18.0)
  • Spring AOP 中记录日志
  • udp tcp协议
  • C语言结构体详细讲解
  • 公交车信息管理系统:实现交通数据的智能化处理
  • 在 Windows 下生成 .tgz 文件的方法
  • 编程式浪漫,100款圣诞树代码分享
  • Nacos的下载和启动(如何快速稳定下载在github中)
  • python基础知识(六)
  • 神经网络-LeNet
  • es 中 terms set 使用
  • 绩效考核试题
  • 停车管理系统:构建安全、便捷的停车环境
  • 十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯(Default_Handler/hartfault)