Android-Glide
Glide(图片加载库)
官方网址:https://github.com/bumptech/glide
关于 Glide
Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline
),以及自动的资源池技术。
Glide 支持拉取,解码和展示视频快照,图片,和GIF动画。Glide的Api是如此的灵活,开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide使用的是一个定制化的基于HttpUrlConnection
的栈,但同时也提供了与Google Volley和Square OkHttp快速集成的工具库。
虽然Glide 的主要目标是让任何形式的图片列表的滚动尽可能地变得更快、更平滑,但实际上,Glide几乎能满足你对远程图片的拉取/缩放/显示的一切需求。
API
Glide 使用简明的流式语法API,这是一个非常棒的设计,因为它允许你在大部分情况下一行代码搞定需求:
Glide.with(fragment)
.load(url)
.into(imageView);
性能
Glide 充分考虑了Android图片加载性能的两个关键方面:
- 图片解码速度
- 解码图片带来的资源压力
为了让用户拥有良好的App使用体验,图片不仅要快速加载,而且还不能因为过多的主线程I/O或频繁的垃圾回收导致页面的闪烁和抖动现象。
Glide使用了多个步骤来确保在Android上加载图片尽可能的快速和平滑:
- 自动、智能地下采样(
downsampling
)和缓存(caching
),以最小化存储开销和解码次数; - 积极的资源重用,例如字节数组和Bitmap,以最小化昂贵的垃圾回收和堆碎片影响;
- 深度的生命周期集成,以确保仅优先处理活跃的Fragment和Activity的请求,并有利于应用在必要时释放资源以避免在后台时被杀掉。
配置要求
Glide v4最低支持Android Ice Cream Sandwich (API level 14).
基础使用
添加依赖包
dependencies { implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' //Glide注解处理器的依赖 }
基础使用
Glide.with(fragment) //上下文 View Fragmen都可以,与其生命周期进行绑定了。 .load(url) //图片资源 资源ID 远程图片url等 .into(imageView); //ImageView
占位图
1.placeholder 正在请求图片的时候展示的图片
2.error 如果请求失败的时候展示的图片(如果没有设置,还是展示placeholder占位符)
3.fallback 如果请求的url/model为null的时候展示的图片(如果没有设置,还是展示placeholder占位符)
RequestOptions requestOptions = new RequestOptions() .placeholder(Drawable) .error(Drawable) .fallback(Drawable) .override(width,height); Glide.with(fragment) .load(url) .apply(requestOptions) .into(imageView);
过度动画
定义Glide如何从占位符到新加载的图片,或从缩略图到全尺寸图像过度。
交叉淡入(避免占位图还能显示)
// 交叉淡入的方式显示占位符,避免占位符还能显示。 DrawableCrossFadeFactory factory = new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build(); Glide.with(this) .load(testUrl) .apply(requestOptions) .transition(DrawableTransitionOptions.withCrossFade(factory)) .into(glideImage);
变换
CircleCrop 圆角
RoundedCorner 四个角度统一指定
GranularRoundedCorners 四个角度单独指定
Rotate 旋转
Glide.with(this) .load(testUrl) .apply(requestOptions) .transition(DrawableTransitionOptions.withCrossFade(factory)) .transform(new CircleCrop()) .into(glideImage);
Generated API
1.添加Glide 注解处理的依赖。
2.在Application模块中包含一个AppGlideModule的实现:
@GlideModule public final class MyGlideAppModule extends AppGlideModule { }
配置完了类后可以对项目进行编译完了后,可以更便捷的来使用流试的api来配置这些占位符。
GlideApp.with(this) .load(testUrl) .placeholder(R.drawable.ic_launcher_background) .error(R.drawable.ic_launcher_foreground) .fallback(R.drawable.ic_launcher_background) .override(100, 100) .into(glideImage);
GlideExtension与GlideOption(扩展与配置选项)
当需要大量图片处理时可以达到更加简便。
@GlideExtension public class MyGlideAppExtension { private MyGlideAppExtension() { } @GlideOption public static BaseRequestOptions<?> defaultImg(BaseRequestOptions<?> options){ return options .placeholder(R.drawable.ic_launcher_background) .error(R.drawable.ic_launcher_foreground) .fallback(R.drawable.ic_launcher_background) .transform(new CircleCrop()); } }
GlideApp.with(this).load(testUrl).defaultImg().into(glideImage);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具