【笔记】Android高效图片加载库Glide
前言
Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.(Github)
引入Glide依赖
app/build.gradle
1 | dependencies { |
添加网络权限
- 在清单文件的
<application></application>
之外添加网络权限
app/src/main/AndroidManifest.xml
1 | <uses-permission android:name="android.permission.INTERNET" /> |
使用Glide
在布局中添加图片控件
app/src/main/res/layout/activity_main.xml
1 | <ImageView |
在Java中使用Glide渲染图片
直接渲染图片
- 将网络图片渲染到ImageView中
<url>
:网络图片资源地址
app/src/main/java/…/MainActivity.java
1 | ImageView imageView = findViewById(R.id.iv); |
使用占位符
- 可以同时配置多个占位符配置,也可以只配置一个占位符配置
.placeholder()
:正在请求图时展示的占位符图片.error()
:请求失败时展示的占位符图片,如果没有设置默认展示.placeholder()
配置的占位符图片.fallback()
:请求为空时展示的占位符图片,如果没有设置默认展示.placeholder()
配置的占位符图片.override(<width>, <height>)
:强制指定占位符图片宽高,单位px,如果没有指定则跟随ImageView的配置
.apply(requestOptions)
:应用配置
app/src/main/java/…/MainActivity.java
1 | ImageView imageView = findViewById(R.id.iv); |
占位符的过渡动画
从占位符渲染为真正的图片时的过渡动画
Glide默认实现了交叉淡入效果,可以直接使用
使用默认的Drawable方式
.transition(DrawableTransitionOptions.withCrossFade(<time>))
:可以指定过渡动画的展示时间
app/src/main/java/…/MainActivity.java
1 | ImageView imageView = findViewById(R.id.iv); |
- 使用Bitmap方式
.transition(BitmapTransitionOptions.withCrossFade(<time>))
:可以指定过渡动画的展示时间
app/src/main/java/…/MainActivity.java
1 | ImageView imageView = findViewById(R.id.iv); |
图形变换
- 使用图形变换时,只有对
.jpeg
格式的图片有效
圆形
app/src/main/java/…/MainActivity.java
1 | Glide.with(this) |
圆角
- 四个角同时指定弧度值,都根据指定弧度变换为圆角
<reg>
:四个角的弧度值
app/src/main/java/…/MainActivity.java
1 | Glide.with(this) |
- 四个角单独指定弧度值,都根据指定弧度变换为圆角
<reg_left_top>
:左上角的弧度值<reg_right_top>
:右上角的弧度值<reg_right_bottom>
:右下角的弧度值<reg_left_bottom>
:左下角的弧度值
app/src/main/java/…/MainActivity.java
1 | Glide.with(this) |
旋转
- 根据指定的角度顺时针进行旋转
<reg>
:旋转的角度
app/src/main/java/…/MainActivity.java
1 | Glide.with(this) |
Glide扩展
- Glide注解处理器的使用
- 在类上通过注解的方式,生成一个更加高效的Glide类
引入Glide注解处理器依赖
app/build.gradle
1 | dependencies { |
使用GlideApp类
创建配置类
- 创建一个
MyGlideModule
类(类名自定义)作为配置类,继承自AppGlideModule
类,并在类上添加@Glidemodule
注解,用于生成GlideApp类
app/src/main/java/…/MyGlideModule.java
1 |
|
- 创建配置类后重新编译项目即可完成GlideApp类的生成
使用GlideApp类添加占位符配置
- 使用GlideApp类,可以使用流式API添加占位符配置,而不需要创建
RequestOptions
对象
1 | GlideApp.with(this) |
使用频繁使用的选项集合进行配置
创建配置类
- 创建一个
MyGlideExtension
类(类名自定义)作为配置类,并添加@GlideExtension
注解 - 必须创建一个私有无参构造
- 将频繁使用的配置提取为配置集,创建静态方法,返回配置集,并在方法上添加
@GlideOption
注解- 配置集方法名可以自定义
- 配置集方法可以指定多个
- 变换效果不能在配置集中配置
app/src/main/java/…/MyGlideExtension.java
1 |
|
- 创建配置类后重新编译项目,使配置集方法生效
使用配置集
- 使用配置集可以提高创建对象的效率
defaultOption()
:配置集方法名
app/src/main/java/…/MainActivity.java
1 | GlideApp.with(this) |