使用 Glide 和字符串数组在资源中显示图像
Using Glide and a String Array to display images in Resource
目前我有一个使用 RecyclerView
的应用程序,当单击其中一个项目时,它会使用 Glide 加载图像。这些都托管在网络服务器上,所有项目的 URL 都存储在字符串数组中。适配器计算出哪个位置与什么匹配并存储在“imageGallery
”中下载图像,然后将其加载到应用程序中。第一次下载后,它会被存储并在您每次按下该项目时重复使用,但是您按下的每个新项目都必须定期下载。
这是对 URL 的
进行排序的字符串数组示例
<string-array name="gallery">
<item>http://britishsheepbreeds.co.uk/app/gallery/badger_welsh_mountain.jpg</item>
<item>http://britishsheepbreeds.co.uk/app/gallery/balwen.jpg</item>
<item>http://britishsheepbreeds.co.uk/app/gallery/beltex.jpg</item>
</string-array>
在与一些人进行 Beta 测试后,人们认为将图像在线并在单击项目之前不将其加载到应用程序中并不是一个好方法,所以我在考虑两个选项。
选项 1. 首次加载应用程序时下载所有图像,然后使用存储上的 cached/images 来加载。
选项 2。将所有图像放在本地可绘制对象或 mipmap(或应用程序中的其他目录)中,以便他们从应用程序存储中调用它们,而不是依赖互联网。
我试图通过修改我的字符串来做到这一点,但是这不起作用
我更改了字符串数组中的一个项目以进行测试,并添加了一个 toast 以确保它调用了正确的信息位,但它仍然没有加载。
<string-array name="gallery">
<item>http://britishsheepbreeds.co.uk/app/gallery/badger_welsh_mountain.jpg</item>
<item>http://britishsheepbreeds.co.uk/app/gallery/balwen.jpg</item>
<item>R.mipmap.beltex</item>
</string-array>
滑翔代码是:
Glide.with(this)
.asBitmap()
.load(imageGallery)
.into(gallery);
资源文件夹:
Toast 消息显示它可以很好地从字符串数组中提取信息,但是引用似乎不起作用。
如果我将 .load(imageGallery)
替换为 .load(R.mipmap.beltex)
,所有项目的图像都会加载。
欢迎任何帮助。我究竟做错了什么?它几乎就像引用不适用于字符串。我是否必须解析字符串以使其用作参考字段。
您需要从名称中获取该图像的 ID 才能加载它。
将数组项从R.mipmap.beltex替换为beltex
并在设置图像时从名称中获取 id
int resId = getResources().getIdentifier(imageGallery, "mipmap",getPackageName());
Glide.with(this).load(resId).into(gallery);
目前我有一个使用 RecyclerView
的应用程序,当单击其中一个项目时,它会使用 Glide 加载图像。这些都托管在网络服务器上,所有项目的 URL 都存储在字符串数组中。适配器计算出哪个位置与什么匹配并存储在“imageGallery
”中下载图像,然后将其加载到应用程序中。第一次下载后,它会被存储并在您每次按下该项目时重复使用,但是您按下的每个新项目都必须定期下载。
这是对 URL 的
进行排序的字符串数组示例 <string-array name="gallery">
<item>http://britishsheepbreeds.co.uk/app/gallery/badger_welsh_mountain.jpg</item>
<item>http://britishsheepbreeds.co.uk/app/gallery/balwen.jpg</item>
<item>http://britishsheepbreeds.co.uk/app/gallery/beltex.jpg</item>
</string-array>
在与一些人进行 Beta 测试后,人们认为将图像在线并在单击项目之前不将其加载到应用程序中并不是一个好方法,所以我在考虑两个选项。
选项 1. 首次加载应用程序时下载所有图像,然后使用存储上的 cached/images 来加载。
选项 2。将所有图像放在本地可绘制对象或 mipmap(或应用程序中的其他目录)中,以便他们从应用程序存储中调用它们,而不是依赖互联网。
我试图通过修改我的字符串来做到这一点,但是这不起作用
我更改了字符串数组中的一个项目以进行测试,并添加了一个 toast 以确保它调用了正确的信息位,但它仍然没有加载。
<string-array name="gallery">
<item>http://britishsheepbreeds.co.uk/app/gallery/badger_welsh_mountain.jpg</item>
<item>http://britishsheepbreeds.co.uk/app/gallery/balwen.jpg</item>
<item>R.mipmap.beltex</item>
</string-array>
滑翔代码是:
Glide.with(this)
.asBitmap()
.load(imageGallery)
.into(gallery);
资源文件夹:
Toast 消息显示它可以很好地从字符串数组中提取信息,但是引用似乎不起作用。
如果我将 .load(imageGallery)
替换为 .load(R.mipmap.beltex)
,所有项目的图像都会加载。
欢迎任何帮助。我究竟做错了什么?它几乎就像引用不适用于字符串。我是否必须解析字符串以使其用作参考字段。
您需要从名称中获取该图像的 ID 才能加载它。
将数组项从R.mipmap.beltex替换为beltex 并在设置图像时从名称中获取 id
int resId = getResources().getIdentifier(imageGallery, "mipmap",getPackageName());
Glide.with(this).load(resId).into(gallery);