Creating integer array of resource IDs

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-28 15:28:52

问题


I have some images in my res/drawable folder. Let's say img1.png, img2.png and img3.png. I am currently creating an integer array of these image IDs in Java like this

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

Instead, is it possible to create an integer array in one of res/values files (say strings.xml) like this

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

and then access it in Java via getResources().getIntArray(R.array.img_id_arr)?


回答1:


Use just "array" instead of "integer-array". See Typed Array in the developer guide.




回答2:


See 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]));



回答3:


Make a LevelListDrawable. Although it is not exactly what you want, but pretty much achievable.



来源:https://stackoverflow.com/questions/5347107/creating-integer-array-of-resource-ids

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!