以编程方式在Android中加载图像

时间:2015-02-18 22:48:05

标签: android image loading device

我想从Drawable Resource文件夹中加载图像,而不显式输入标识符。例如:使用' for'将图像加载到drawable-mdpi中。循环并使用整数作为位图解码器的参数。这似乎在理论上有效,但我担心的是:整数0x7F020000是否可绘制的内部ID似乎在所有设备上开始不变?或者,如果我创建代码以这种方式加载图像,它将不会在我测试的Android设备上运行吗?

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

1 个答案:

答案 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 将相同(不会更改)。

简单的解决方案:

  1. 创建图片并按顺序命名,如:img0.pngimg1.png,...并将它们放在drawable文件夹中。
  2. 通过以下方式从名称中获取图片ID:

    int imgID = getResources().getIdentifier("img00" , "drawable", getPackageName());

  3. 因此,如果您想使用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
        //...
    }