以编程方式加载 Android 中的图像
Programmatically loading images in Android
我想从我的 Drawable Resource 文件夹中加载图像,而无需明确键入它们的标识符。例如:使用 'for' 循环并使用整数作为位图解码器的参数在 drawable-mdpi 中加载图像。这在理论上似乎是可行的,但我担心的是:整数 0x7F020000 是否在所有设备上似乎都是可绘制 Int ID 开始的常数?或者如果我创建代码以这种方式加载图像,它会不会在与我正在测试的设备不同的 Android 设备上工作?
有没有更好的方法来实现我所描述的?
即使可以从 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 will change its content when you update your resource, and clean and 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
//...
}
我想从我的 Drawable Resource 文件夹中加载图像,而无需明确键入它们的标识符。例如:使用 'for' 循环并使用整数作为位图解码器的参数在 drawable-mdpi 中加载图像。这在理论上似乎是可行的,但我担心的是:整数 0x7F020000 是否在所有设备上似乎都是可绘制 Int ID 开始的常数?或者如果我创建代码以这种方式加载图像,它会不会在与我正在测试的设备不同的 Android 设备上工作?
有没有更好的方法来实现我所描述的?
即使可以从 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 will change its content when you update your resource, and clean and 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
//...
}