如何使用array资源文件中定义的资源数组
这个题目比较绕,下面先来解释一下:
array.xml文件如下:
<integer-array name="myArray"> <item>@drawable/pic1</item> <item>@drawable/pic2</item> <item>@drawable/pic3</item> <item>@drawable/pic4</item> </integer-array>
一般我们在程序中这么使用:
int[] picArray = getResources().getIntArray(R.array.myArray);
我们期待拿到的是:
R.drawable.pic1, R.drawable.pic2,R.drawable.pic3,R.drawable.pic4
但是这样拿到的却是0,0,0,0
这种情况在自定义View的时候也会被使用到。
那么怎么解决呢,其实很简单,看代码:
int[] picArray = new int[4]; for (int i = 1; i <=4; i++) { try { Class res = R.drawable.class; Field field = res.getField("pic"+i); picArray[i-1] = field.getInt(null); } catch (Exception e) { Log.e("MyTag", "Failure to get drawable id.", e); } }安装惯例,这种方法只是笨方法,以下方法才是大招:
TypedArray ar = context.getResources().obtainTypedArray(R.array.myArray); int len = ar.length(); int[] picArray = new int[len]; for (int i = 0; i < len; i++) picArray[i] = ar.getResourceId(i, 0); ar.recycle(); for (int i = 0; i < len; i++) Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(picArray[i]));
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 透明代理和反向代理
- 下一篇: android在xml文件中定义drawable数组、id数组等