我在drawable-mdpi
、drawable-hdpi
和drawable-xhdpi
文件夹中有718个可绘制对象,它们的名称分别为1.png、2.png…到718.png。(它们实际上是神奇宝贝精灵)
因此,根据神奇宝贝的不同,我想加载其中一个来显示它。然而,我不能使用数字直接识别R可提取ID。
除了718大小写开关或Hashmap<Integer,Integer>
之外,还有什么方法可以将int ID与R可绘制ID链接起来吗?
您可以尝试:
String sprite = "drawable/"+number;
int imageResource = getResources().getIdentifier(sprite, null, getPackageName());
drawable
是图像所在的文件夹。number
是所需图像的编号。例如1.png
将Drawables
命名为image_1.png..到..image_718.png.
使用getIdentifier
,您可以获得这样的可提取资源Id。
int resourceId = getResources().getIdentifier("image_1", "drawable", getPackageName());
使用TypedArray
来定义数组资源中的映像。然后您可以加载资源并将资源作为偏移量获取。它将明显快于使用getIdentifier()。请注意,我添加了一个0.png的drawable,因此数组索引将与您的数值相匹配。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="icons">
<item>@drawable/0</item>
<item>@drawable/1</item>
<item>@drawable/2</item>
<item>@drawable/3</item>
</array>
</resources>
然后在你的代码中:
Resources res = getResources();
TypedArray sprites = res.obtainTypedArray(R.array.icons);
Drawable drawable = sprites.getDrawable(1);
以下是提供背景的资源链接:http://developer.android.com/guide/topics/resources/more-resources.html