将 Glide 用于 Android,使用(本地)替代资源作为 url 的好方法是什么?
Using Glide for Android, what's a good way to use (local) alternative sources for urls?
我正在使用 Glide 在我的 Android 应用程序中加载图像:
Glide.with(上下文)
.load("http://www.example.com/whatever/icon.png")
.into(imageView);
我想在我的应用程序 APK 文件中捆绑一些图片,以确保即使设备处于离线状态,它们也始终可用。我仍然想使用 Glide 来受益于调整大小的图像的内存缓存、在后台线程中加载和缩放等功能,并保持显示图像的界面一致。
我需要像这样加载的每个图像都由 URL 指定。
如果有本地版本(本地文件名是通过使用 URL 的一部分生成的 [例如,将 URL 字符串中的“http://www.example.com/”替换为 "file:///android_asset/bundled_images/whatever/"],我想用那个。如果没有,需要从实际下载图片URL.
这是一个例子:
我在 http://www.example.com/whatever/icon.png 有一张图片
我会将这张图片捆绑在 apk 中:
/assets/bundled_images/whatever/icon.png
规则如下:
如果图像文件存在于本地资产下,则使用该文件。如果图片在本地资源下不存在,则使用远程文件。
每当我请求将图像加载到图像视图中时,我希望能够只使用完整的 URL (http://www.example.com/whatever/icon.png),并且我的图像加载器应该能够自动首先检查本地副本。
我可以用 Glide 的任何功能做这样的事情吗?是的,我当然可以在调用 glide 之前检查文件是否存在,但这似乎是一个足够常见的用例,Glide could/should 有一个功能。在后台进行文件存在检查也很好。
Glide 提供了在设备离线时加载本地图像的选项。
这可以使用 error() 方法来完成。
Glide.with(this).load(imageUrl)
.error(localImageResId)
.into(mIconView);
上面的代码从 imageUrl 下载图像并将其加载到 imageView 中。
如果出现错误(例如设备离线),它会加载本地图像资源。
您可以按照此处描述的方式添加自定义 GlideModule
来实现所需的灵活性:Glide Configuration. Also you need to implement appropriate Glide's Loader which would encapsulate the logic for downloading. In your case it can be something similar to UriLoader。
我正在使用 Glide 在我的 Android 应用程序中加载图像:
Glide.with(上下文) .load("http://www.example.com/whatever/icon.png") .into(imageView);
我想在我的应用程序 APK 文件中捆绑一些图片,以确保即使设备处于离线状态,它们也始终可用。我仍然想使用 Glide 来受益于调整大小的图像的内存缓存、在后台线程中加载和缩放等功能,并保持显示图像的界面一致。
我需要像这样加载的每个图像都由 URL 指定。 如果有本地版本(本地文件名是通过使用 URL 的一部分生成的 [例如,将 URL 字符串中的“http://www.example.com/”替换为 "file:///android_asset/bundled_images/whatever/"],我想用那个。如果没有,需要从实际下载图片URL.
这是一个例子:
我在 http://www.example.com/whatever/icon.png 有一张图片 我会将这张图片捆绑在 apk 中:
/assets/bundled_images/whatever/icon.png
规则如下:
如果图像文件存在于本地资产下,则使用该文件。如果图片在本地资源下不存在,则使用远程文件。
每当我请求将图像加载到图像视图中时,我希望能够只使用完整的 URL (http://www.example.com/whatever/icon.png),并且我的图像加载器应该能够自动首先检查本地副本。
我可以用 Glide 的任何功能做这样的事情吗?是的,我当然可以在调用 glide 之前检查文件是否存在,但这似乎是一个足够常见的用例,Glide could/should 有一个功能。在后台进行文件存在检查也很好。
Glide 提供了在设备离线时加载本地图像的选项。 这可以使用 error() 方法来完成。
Glide.with(this).load(imageUrl)
.error(localImageResId)
.into(mIconView);
上面的代码从 imageUrl 下载图像并将其加载到 imageView 中。 如果出现错误(例如设备离线),它会加载本地图像资源。
您可以按照此处描述的方式添加自定义 GlideModule
来实现所需的灵活性:Glide Configuration. Also you need to implement appropriate Glide's Loader which would encapsulate the logic for downloading. In your case it can be something similar to UriLoader。