1. glide加载图片
Glide.with(activity).load(myUrl).into(imageView);
2. 取消加载图片 尽管及时取消不必要的加载是很好的实践,但这并不是必须的操作。实际上,当 Glide.with()
中传入的 Activity 或 Fragment 实例销毁时,Glide 会自动取消加载并回收资源。
Glide.with(activity).clear(imageView);
3.在 Application 模块中的使用
在 Application 模块中,可创建一个添加有 @GlideModule
注解,继承自 AppGlideModule
的类。此类可生成出一个流式 API,内联了多种选项,和集成库中自定义的选项:
package com.example.myapp;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}
生成的 API 默认名为 GlideApp
,与 AppGlideModule
的子类包名相同。在 Application 模块中将 Glide.with()
替换为 GlideApp.with()
,即可使用该 API 去完成加载工作。
GlideApp.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
注意: 程序库 (Library) 不 应该包含 AppGlideModule
实现
4.定制请求
Glide 提供了许多可应用于单一请求的选项,包括变换、过渡、缓存选项等。
默认选项可以直接应用于请求上:
Glide.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
选项也可以通过 RequestOptions
类来在多个请求之间共享:
apply() 方法可以被调用多次,因此 RequestOption 可以被组合使用。如果 RequestOptions 对象之间存在相互冲突的设置,那么只有最后一个被应用的 RequestOptions 会生效。
RequestOptions sharedOptions =
new RequestOptions()
.placeholder(placeholder)
.fitCenter();
Glide.with(fragment)
.load(myUrl)
.apply(sharedOptions)
.into(imageView1);
Glide.with(fragment)
.load(myUrl)
.apply(sharedOptions)
.into(imageView2);
5.RequestBuilder 可以被复用于开始多个请求:
RequestBuilder<Drawable> requestBuilder =
Glide.with(fragment)
.asDrawable()
.apply(requestOptions);
for (int i = 0; i < numViews; i++) {
ImageView view = viewGroup.getChildAt(i);
String url = urls.get(i);
requestBuilder.load(url).into(view);
}
6.过渡选项
TransitionOptions 用于决定你的加载完成时会发生什么。
使用 TransitionOption
可以应用以下变换:
- View淡入
- 与占位符交叉淡入
- 或者什么都不发生
如果不使用变换,你的图像将会“跳入”其显示位置,直接替换掉之前的图像。为了避免这种突然的改变,你可以淡入view,或者让多个Drawable交叉淡入,而这些都需要使用TransitionOptions
完成。
例如,要应用一个交叉淡入变换:
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
Glide.with(fragment)
.load(url)
.transition(withCrossFade())
.into(view);
不同于RequestOptions
,TransitionOptions
是特定资源类型独有的,你能使用的变换取决于你让Glide加载哪种类型的资源。
这样的结果是,假如你请求加载一个 Bitmap
,你需要使用 BitmapTransitionOptions ,而不是 DrawableTransitionOptions 。同样,当你请求加载 Bitmap
时,你只需要做简单的淡入,而不需要做复杂的交叉淡入。
7.标签signature的使用
问题:Glide加载相同URL时由于缓存无法更新图片
可以通过更改缓存配置解决该问题以外,还可以通过设置signature标签使每次的请求都是一个新的请求
//在需要重新获取图片时调用
String sign = String.valueOf(System.currentTimeMillis());
Glide.with(this).load(xxx).signature(new StringSignature(sign)).into(xxx);
8..placeholder .error .fallback
当没有网络的时候 显示error图片;
此时如果突然有网了,图片会从placeholder变成你想要展示的图片,注意这种情况前提是权限清单里需要有android.permission.ACCESS_NETWORK_STATE权限,否则就算网络改变了,还是显示error图片;
Glide.with(MainActivity.this)
.load("https://xxxx")
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.error)
.fallback(R.mipmap.fallback)
.crossFade(2000)
.into(imageView);
注意:对 url 进行 null 检验并不是必须的,如果 url 为 null,Glide 会清空 View 的内容,或者显示 placeholder Drawable 或 fallback Drawable 的内容。