我想从Drawable Resource文件夹中加载图像,而不显式输入标识符。例如:使用' for'将图像加载到drawable-mdpi中。循环并使用整数作为位图解码器的参数。这似乎在理论上有效,但我担心的是:整数0x7F020000是否可绘制的内部ID似乎在所有设备上开始不变?或者,如果我创建代码以这种方式加载图像,它将不会在我测试的Android设备上运行吗?
有没有更好的方法来实现我所描述的目标?
答案 0 :(得分:0)
即使你可以从R文件中获取它,也不应该对id进行硬编码。来自android API:
Although the R class is where resource IDs are specified, you should never need to look there to discover a resource ID.
R class会在您更新资源时更改其内容,并清除rebuilt。这意味着您无法确保在每次构建后为同一个值分配相同的资源名称。但是,在不同设备中发布和安装apk后,ID 将相同(不会更改)。
简单的解决方案:
img0.png
,img1.png
,...并将它们放在drawable
文件夹中。通过以下方式从名称中获取图片ID:
int imgID = getResources().getIdentifier("img00" , "drawable", getPackageName());
因此,如果您想使用for
循环,它应该类似于:
for(int i=0; i < total_image_number; i++) {
int imgID = getResources().getIdentifier("img"+i , "drawable", getPackageName());
//do something else with our imgID here
//...
}