Glide — 高级加载
原文:Advanced Loading
作者:Norman Peitek
翻译:Dexter0218
上一篇文章,我们一起了解了为何要使用Glide,并举了个简单栗子(从网络加载一张图片)。但这并不是Glide唯一支持的图片源。在这篇文章中,将要介绍Glide如何从Android资源、文件和Uri中获取图片并加载。
Glide 系列概览
- 入门简介
- 高级加载
- 适配器(ListView, GridView)
- 占位图& 淡入淡出动画
- 图片大小 & 缩放
- 播放GIF & 视频
- 缓存基础
- 请求优先级
- 缩略图
- 回调:定制view中使用SimpleTarget和ViewTarget
- 通知栏和桌面小控件的图片加载
- 异常: 调试和报错处理
- 自定义变换
- 用animate()定制动画
- 整合网络协议栈
- 用Modules定制Glide
- Glide Module 案例: 接受自签名HTTPS证书
- Glide Module 案例: 自定义缓存
- Glide Module 案例: 通过加载自定义大小图片优化
- 动态使用 Model Loaders
- 如何旋转图片
- 系列综述
从Res资源中加载
首先介绍从Android资源中加载。不同于上一节的String类型的网络URL,这里是一个Int型的的资源id。
int resourceId = R.mipmap.ic_launcher;
Glide
.with(context)
.load(resourceId)
.into(imageViewResource);
如果你觉得R.mipmap.没见过, 这是Android的一个处理图标的新方法。
虽然,你可以直接在ImageView的属性里添加这一资源。但是,如果你使用Glide这种更高级的方式进行动态转换,你的应用可以做得非常有趣。
从文件中加载
从资源文件加载,通常是固定的,当你让用户任意选择一张图片来显示的时候,这个文件的路径并非是开发人员预先设定的,从图片文件中加载对于实际应用将会非常有用。需要传递的参数也仅仅是一个文件对象,举个栗子:
// this file probably does not exist on your device. However, you can use any file path, which points to an image file
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");
Glide
.with(context)
.load(file)
.into(imageViewFile);
从Uri加载
最后介绍从Uri中加载图片,这里的请求跟上面的方法并无太大差异,直接看代码:
// 这个可以是任何Uri. 这里为了演示,我们只创建了一个指向桌面图标的Uri
Uri uri = resourceIdToUri(context, R.mipmap.future_studio_launcher);
Glide
.with(context)
.load(uri)
.into(imageViewUri);
下面一个小的工具函数可以将资源id转换为一个Uri:
public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FOREWARD_SLASH = "/";
private static Uri resourceIdToUri(Context context, int resourceId) {
return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId);
}
当然,Uri并不一定是从资源id中创建,它可以是任意Uri。
展望
基本的加载方法都已经介绍了。我们将会去探索一些更有趣的东西. 下一篇文章,将要介绍ListView和GridView中适配器的使用和用Glide进行缓存。