使用Glide for Android,什么是使用(本地)替代网址的好方法?

时间:2015-10-24 14:01:27

标签: android android-glide

我使用Glide在我的Android应用中加载图片:

Glide.with(上下文)     .load(" http://www.example.com/whatever/icon.png&#34)     .into(ImageView的);

我想在我的应用APK文件中捆绑一些图片,以确保它们始终可用,即使设备处于离线状态。我仍然希望使用Glide受益于诸如调整大小的图像的内存缓存,在后台线程中加载和缩放以及保持用于显示图像的界面一致的功能。

我需要像这样加载的每个图像都由URL指定。 如果有本地版本(本地文件名是通过使用URL的一部分生成的[例如替换" http://www.example.com/"使用" file:/// android_asset /在URL字符串中bundled_images / whatever /"],我想使用那个。如果没有,则需要从实际URL下载图像。

以下是一个例子:

我在http://www.example.com/whatever/icon.png处有一张图片 我将这个图像捆绑在apk下面:

/assets/bundled_images/whatever/icon.png

规则如下:

如果图像文件存在于本地资产下,请使用该文件。如果本地资产下不存在该图像,请使用远程文件。

每当我请求将图像加载到imageview中时,我希望能够只使用完整的URL(http://www.example.com/whatever/icon.png),我的图像加载器应该能够自动检查本地副本

我可以使用Glide的任何功能执行此类操作吗?是的,我当然可以在调用glide之前对文件进行检查,但看起来Glide可能/应该具有此功能的常见用例。在后台进行文件存在检查也很好。

2 个答案:

答案 0 :(得分:1)

Glide提供了在设备离线时加载本地图像的选项。 这可以使用 error()方法完成。

Glide.with(this).load(imageUrl)
                .error(localImageResId)
                .into(mIconView);

上面的代码从imageUrl下载图像并将其加载到imageView中。 如果出现错误(ex设备离线),则会加载本地图像资源。

答案 1 :(得分:1)

您可以通过此处描述的方式添加自定义GlideModule来实现所需的灵活性:Glide Configuration。您还需要实现适当的Glide的Loader,它将封装逻辑以供下载。在您的情况下,它可以类似于UriLoader