系列文章索引
Glide下载和设置教程(译)
Glide上手教程(译)
原文链接
https://bumptech.github.io/glide/doc/getting-started.html
基本用法
在不同的应用场景下用Glide加载图片只需要一行代码:
Glide.with(fragment)
.load(myUrl)
.into(imageView);
取消你不需要的加载也很简单:
Glide.with(fragment).clear(imageView);
虽然取消你不需要的加载是很好的做法,但你不需要这么做。事实上,当你通过 Glide.with()传递进入的Activity或者Fragment销毁时Glide将自动的清楚加载器和回收这个加载器加载的所有资源。
Applications
应用可以添加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生成在与AppGlideModule相同的目录下并默认以GlideApp命名。应用可以使用这个API通过GlideApp.with()代替Glide.with()来开启所有加载器:
GlideApp.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
查看generated API page获取更多信息
ListView 和 RecyclerView
在ListView或者RecylerView中加载图片和加载一张图片使用的是相同的加载代码。Glide会自动处理View的复用和请求取消。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String url = urls.get(position);
Glide.with(fragment)
.load(url)
.into(holder.imageView);
}
你不需要检查你的url是不是空的,当url为空时Glide会清除View或者添加你指定的placeholder Drawable或者fallback Drawable。
Glide仅仅需要你在任何开启加载器的复用之前一个位置的View Target必须有一个新的加载器开启加载或者准确调用清除通过 clear() API。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (isImagePosition(position)) {
String url = urls.get(position);
Glide.with(fragment)
.load(url)
.into(holder.imageView);
} else {
Glide.with(fragment).clear(holder.imageView);
holder.imageView.setImageDrawable(specialDrawable);
}
}
通过调用clear()或者into(View)到View,你可以取消加载器保证Glide不会在调用完成后改变View的内容。如果你忘记调用clear()并且没有开启新的加载器,加载器在你指定特定的图片之后会加载与你之前位置相同的View并且将这个View的内容修改成旧的图片。
尽管我们展示的例子是对应RecyclerView,但是对于ListView也是适用相同的原则。