使用Glide下载自定义大小图片
开发者可以通过Glide的ModelLoader接口获得图片大小,并根据这个大小来加载一个合适尺寸的图片url。 使用合适尺寸的图片可以节约带宽,设备的存储空间,还可以提升app性能。 2014年的Google I/O app团队写了一篇关于如何使用ModelLoader接口调整加载的图片大小的文章。请在GitHub上查看 I/O app的源码。 为了实现自定义的ModelLoader来通过http/https下载图片,可以继承BaseGlideUrlLoader这个类
public interface MyDataModel {
public String buildUrl(int width, int height);
}
public class MyUrlLoader extends BaseGlideUrlLoader<MyDataModel> {
@Override
protected String getUrl(MyDataModel model, int width, int height) {
// Construct the url for the correct size here.
return model.buildUrl(width, height);
}
}
然后,你就可以使用自定义的ModelLoader来加载图片了,其他的事情会自动完成:
Glide.with(yourFragment)
.using(new MyUrlLoader())
.load(yourModel)
.into(yourView);
如果你想避免调用.using(new MyUrlLoader())
,你可以实现一个自定义的ModelLoaderFactory
,并在GlideModule
中注册它。
public class MyGlideModule implements GlideModule {
...
@Override
public void registerComponents(Context context, Glide glide) {
glide.register(MyDataModel.class, InputStream.class,
new MyUrlLoader.Factory());
}
}
注册ModelLoaderFactory之后,你就不用调用.using()
了:
Glide.with(yourFragment)
.load(yourModel)
.into(yourView);
其他的例子,关于如何使用自定义ModelLoader加载各种尺寸的图片,请查看Flicker示例应用,和Giphy示例应用。