Хранение 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
наimg
TypedArray
например какImageView
background
использовать следующий код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, который отображает путь к привлекаемому ресурсу с помощью псевдоним ресурсов.
посмотреть, если это работает, и, пожалуйста, дайте мне знать, если вам нужна дополнительная помощь.