上周我们了解了用 Glide 的理由和简单的示例来加载一个来自网络的图片。但这不仅仅 Glide 的唯一加载来源。Glide 也能从 Android 资源,文件和 Uri 中加载。在这篇博客中,我们将涉及这三个选项。
Glide 系列预览
- 开始!
- 加载进阶
- ListAdapter(ListView, GridView)
- 占位符 和 渐现动画
- 图片重设大小 和 缩放
- 显示 Gif 和 Video
- 缓存基础
- 请求优先级
- 缩略图
- 回调:SimpleTarget 和 ViewTarget 用于自定义视图类
- 加载图片到通知栏和应用小部件中
- 异常:调试和错误处理
- 自定义转换
- 用 animate() 自定义动画
- 集成网络栈
- 用 Module 自定义 Glide
- Module 实例:接受自签名证书的 HTTPS
- Module 实例:自定义缓存
- Module 实例:用自定义尺寸优化加载的图片
- 动态使用 Model Loader
- 如何旋转图像
- 系列综述
从资源中加载
首先从Android 资源中加载,使用一个资源 id (int
),来替换之前使用字符串去指明一个网络 URL 的情况。
1
2
3
4
5
6
int resourceId = R.mipmap.ic_launcher;
Glide
.with(context)
.load(resourceId)
.into(imageViewResource);
如果你对于 R.mipmap 有困惑,这是 Android 处理 icon 的新方式。
当然,你可以直接为 ImageView 类去设置资源。然而,如果你用的高级话题如动态转换来说,这可能是比较有趣的。
从文件中加载
其次是从文件中加载,当你让用户选择一张照片去显示图像(比如画廊)这可能会比较有用。该参数只是一个文件
对象。我们看一个例子:
1
2
3
4
5
6
7
//这个文件可能不存在于你的设备中。然而你可以用任何文件路径,去指定一个图片路径。
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");
Glide
.with(context)
.load(file)
.into(imageViewFile);
从 Uri 中加载
最后,你也指定一个 Uri
来加载图片。该请求和之前的没有什么不同。
1
2
3
4
5
6
7
//这可能是任何 Uri。为了演示的目的我们只是用一个 launcher icon 去创建了一个 Uri
Uri uri = resourceIdToUri(context, R.mipmap.future_studio_launcher);
Glide
.with(context)
.load(uri)
.into(imageViewUri);
一个小助手功能:简单的从资源 id 转换成 Uri
。
1
2
3
4
5
6
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
不必从资源中去生成,它可以是任何 Uri
。
展望
基本的加载原则已经完成,现在我们可以看看更多有趣的东西。下周我们 在 ListView
和 GridView
中去适配 adapter。