创建资源ID的整数数组

时间:2011-03-18 01:27:43

标签: android arrays android-resources

我的res/drawable文件夹中有一些图像。我们说img1.pngimg2.pngimg3.png。我目前正在用Java创建这些图像ID的整数数组

int[] imgIds = {R.drawable.img1, R.drawable.img2, R.drawable.img3};

相反,是否可以在res/values个文件中创建一个整数数组(比如说strings.xml

<integer-array name="img_id_arr">
    <item>@drawable/img1</item>
    <item>@drawable/img2</item>
    <item>@drawable/img3</item>
</integer-array>

然后通过getResources().getIntArray(R.array.img_id_arr)

在Java中访问它

4 个答案:

答案 0 :(得分:65)

仅使用“array”而不是“integer-array”。请参阅开发者指南中的Typed Array

答案 1 :(得分:47)

请参阅XML integer array, resource references, getIntArray

TypedArray ar = context.getResources().obtainTypedArray(R.array.my_array);
int len = ar.length();
int[] resIds = new int[len];
for (int i = 0; i < len; i++)
    resIds[i] = ar.getResourceId(i, 0);
ar.recycle();
// Do stuff with resolved reference array, resIds[]...
for (int i = 0; i < len; i++)
    Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(resIds[i]));

答案 2 :(得分:2)

制作LevelListDrawable。虽然它不是你想要的,但几乎可以实现。

答案 3 :(得分:0)

我认为最好将它们保留在代码中。

private static final int[] AVATARS = new int[]{
            R.drawable.ava_1, R.drawable.ava_2, R.drawable.ava_3...};