Подтвердить что ты не робот

Создание целочисленного массива идентификаторов ресурсов

У меня есть несколько изображений в моей папке res/drawable. Скажем, img1.png, img2.png и img3.png. В настоящее время я создаю целочисленный массив этих идентификаторов изображений в Java, таких как

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>

а затем получить доступ к нему в Java через getResources().getIntArray(R.array.img_id_arr)?

4b9b3361

Ответ 1

Используйте "массив" вместо "integer-array". См. Typed Array в руководстве разработчика.

Ответ 2

См. массив целых чисел XML, ссылки на ресурсы, 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]));

Ответ 3

Сделайте LevelListDrawable. Хотя это не совсем то, что вы хотите, но в значительной степени достижимо.