在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
background
在img
TypedArray
使用这些Drawable
ImageView.setBackgroundResource(img.getResourceId(index, defaultValue));
其中index
是Drawable
索引。 如果在此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映射到可绘制资源 。
看看这是否有效,请让我知道如果你需要任何额外的帮助。