如何使用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]));
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
