Хранение R. drawable IDs в XML-массиве
Я хотел бы сохранить идентификатор drawable resources в виде R.drawable.* внутри массива с помощью XML-файла значений, а затем получить массив в моей деятельности.
есть идеи, как этого добиться?
4 ответа:
использовать типизированный массив на выглядит так:
<?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();
на создать
xmlимя файлаarrays.xmlдобавьте данные к нему таким образом<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);затем использовать
DrawableнаimgTypedArrayнапример какImageViewbackgroundиспользовать следующий кодImageView.setBackgroundResource(img.getResourceId(index, defaultValue));здесь
index- это .defaultValueэто значение, которое вы даете, если нет элемента в этомindexдля получения дополнительной информации о
TypedArrayперейдите по этой ссылке http://developer.android.com/reference/android/content/res/TypedArray.html
вы можете использовать это для создания массива других ресурсов, таких как чертежи. Обратите внимание, что массив не обязательно должен быть однородным, поэтому вы можете создать массив смешанных типов ресурсов, но вы должны знать, что и где находятся типы данных в массиве.
<?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 или строки.xml, который отображает путь к привлекаемому ресурсу с помощью псевдоним ресурсов.
посмотреть, если это работает, и, пожалуйста, дайте мне знать, если вам нужна дополнительная помощь.