在XML数组中存储可抽取的ID

我想用R.drawable.*的forms将可绘制资源的ID存储在一个使用XML值文件的数组中,然后在我的活动中检索数组。

任何想法如何实现这一目标?

在你的/res文件夹下的arrays.xml文件中使用types化的数组 ,如下所示:

 <?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="random_imgs"> <item>@drawable/car_01</item> <item>@drawable/balloon_random_02</item> <item>@drawable/dog_03</item> </integer-array> </resources> 

然后在你的活动中,像这样访问它们:

 TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs); // get resource ID by index imgs.getResourceId(i, -1) // or set you ImageView's resource to the id mImgView1.setImageResource(imgs.getResourceId(i, -1)); // recycle the array imgs.recycle(); 

value文件夹中创buildxml文件名,它以这种方式将数据添加到它

 <integer-array name="your_array_name"> <item>@drawable/1</item> <item>@drawable/2</item> <item>@drawable/3</item> <item>@drawable/4</item> </integer-array> 

然后通过这种方式获得你的代码

 private TypedArray img; img = getResources().obtainTypedArray(R.array.your_array_name); 

然后使用下面的代码作为ImageView backgroundimg TypedArray使用这些Drawable

 ImageView.setBackgroundResource(img.getResourceId(index, defaultValue)); 

其中indexDrawable索引。 如果在此index处没有项目,则defaultValue是您给出的值

有关TypedArray更多信息,请访问http://developer.android.com/reference/android/content/res/TypedArray.html

您可以使用它来创build其他资源的数组,如drawables。 请注意,该数组不需要是同类的,因此您可以创build一个混合资源types的数组,但是您必须知道数组中的数据types在哪里以及在哪里。

  <?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources> 

并像这样获取你的活动资源

 Resources res = getResources(); TypedArray icons = res.obtainTypedArray(R.array.icons); Drawable drawable = icons.getDrawable(0); TypedArray colors = res.obtainTypedArray(R.array.colors); int color = colors.getColor(0,0); 

请享用!!!!!

就我所知,您不能将数组存储在R.drawable中。

你可以做的是在config.xml或strings.xml中创build一个数组,通过使用别名资源将path映射到可绘制资源 。

看看这是否有效,请让我知道如果你需要任何额外的帮助。