我使用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可能/应该具有此功能的常见用例。在后台进行文件存在检查也很好。
答案 0 :(得分:1)
Glide提供了在设备离线时加载本地图像的选项。 这可以使用 error()方法完成。
Glide.with(this).load(imageUrl)
.error(localImageResId)
.into(mIconView);
上面的代码从imageUrl下载图像并将其加载到imageView中。 如果出现错误(ex设备离线),则会加载本地图像资源。
答案 1 :(得分:1)
您可以通过此处描述的方式添加自定义GlideModule
来实现所需的灵活性:Glide Configuration。您还需要实现适当的Glide的Loader,它将封装逻辑以供下载。在您的情况下,它可以类似于UriLoader。