在Android中编程加载图像



我想从Drawable Resource文件夹中加载图像,而无需显式键入它们的标识符。例如:使用"For"循环加载可绘制mdpi中的图像,并使用整数作为位图解码器的参数。这在理论上似乎有效,但我担心的是:整数0x7F020000是否在所有设备上都是常量?或者,如果我创建代码以这种方式加载图像,它在与我正在测试的Android设备不同的Android设备上不会工作吗?

有没有更好的方法来实现我所描述的?

即使可以从R文件中获取id,也不应该对其进行硬编码。来自安卓API:

Although the R class is where resource IDs are specified, you should never need to look there to discover a resource ID.

当您更新资源、清理和重建时,R类将更改其内容。这意味着您无法确保在每次生成后,相同名称的资源将被分配相同的值。然而,在不同设备中发布和安装了的apk后,ID将是相同的(不变)。

简单的解决方案:

  1. 创建图像并按顺序命名,如:img0.pngimg1.png。。。并将它们放在CCD_ 3文件夹中
  2. 通过以下方式从其名称中获取图像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
    //...
}

最新更新