android 可以像整数数组一样存储可绘制对象 ID 吗?
Could android store drawable ids like an integer-array?
我想要一个整数值的 drawable
id 数组,我可以使用 integer-array
标签像 integer-array
一样存储在 res/values/XXX.xml
中。下面是在 strings.xml
中声明的整数数组
<integer-array name="icons">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</integer-array>
但我想将 @drawable/someImage
之类的可绘制图像 ID 作为整数数组存储在 xml 中。
或 是否有任何替代方法可以将可绘制整数 ID 作为整数数组存储在 xml.
中
您可以使用 string array.
摘录:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="media_names">
<item>Big Buck Bunny</item>
<item>Elephants Dream</item>
<item>Sintel</item>
<item>Tears of Steel</item>
</string-array>
<string-array name="media_uris">
<item>http://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4</item>
<item>http://archive.org/download/ElephantsDream_277/elephant_dreams_640_512kb.mp4</item>
<item>http://archive.org/download/Sintel/sintel-2048-stereo_512kb.mp4</item>
<item>http://archive.org/download/Tears-of-Steel/tears_of_steel_720p.mp4</item>
</string-array>
</resources>
你想达到什么目的,我不能 100% 告诉你这是否是你的最佳选择。
查看文档,特别是 More Resource Types 文章。引用:
Typed Array
A TypedArray defined in XML. You can use this to create an array of other resources, such as drawables.
EXAMPLE:
XML file saved at res/values/arrays.xml:
<?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>
我想 TypedArray
就是您要找的。我有使用它的样品。如果您有兴趣,请看下面的代码:
第一, integer-array
在res/values/arrays.xml
:
<integer-array name="frag_home_ids">
<item>@drawable/frag_home_credit_return_money</item>
<item>@drawable/frag_home_transfer</item>
<item>@drawable/frag_home_balance</item>
<item>@drawable/frag_home_charge</item>
<item>@drawable/frag_home_finance_cdd</item>
<item>@drawable/frag_home_finance_ybjr</item>
<item>@drawable/frag_home_more</item>
</integer-array>
其次,以编程方式获取资源整数值:
TypedArray tArray = getResources().obtainTypedArray(
R.array.frag_home_ids);
int count = tArray.length();
int[] ids = new int[count];
for (int i = 0; i < ids.length; i++) {
ids[i] = tArray.getResourceId(i, 0);
}
//Recycles the TypedArray, to be re-used by a later caller.
//After calling this function you must not ever touch the typed array again.
tArray.recycle();
第三种,像这样调用整数值:
holder.iv.setImageResource(ids[position]);
当然可以通过这种方式得到string
、color
、integer
、layout
、menu
……的整数值。
希望这些代码对您有所启发。
我想要一个整数值的 drawable
id 数组,我可以使用 integer-array
标签像 integer-array
一样存储在 res/values/XXX.xml
中。下面是在 strings.xml
<integer-array name="icons">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</integer-array>
但我想将 @drawable/someImage
之类的可绘制图像 ID 作为整数数组存储在 xml 中。
或 是否有任何替代方法可以将可绘制整数 ID 作为整数数组存储在 xml.
中您可以使用 string array.
摘录:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="media_names">
<item>Big Buck Bunny</item>
<item>Elephants Dream</item>
<item>Sintel</item>
<item>Tears of Steel</item>
</string-array>
<string-array name="media_uris">
<item>http://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4</item>
<item>http://archive.org/download/ElephantsDream_277/elephant_dreams_640_512kb.mp4</item>
<item>http://archive.org/download/Sintel/sintel-2048-stereo_512kb.mp4</item>
<item>http://archive.org/download/Tears-of-Steel/tears_of_steel_720p.mp4</item>
</string-array>
</resources>
你想达到什么目的,我不能 100% 告诉你这是否是你的最佳选择。
查看文档,特别是 More Resource Types 文章。引用:
Typed Array
A TypedArray defined in XML. You can use this to create an array of other resources, such as drawables.EXAMPLE:
XML file saved at res/values/arrays.xml:
<?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>
我想 TypedArray
就是您要找的。我有使用它的样品。如果您有兴趣,请看下面的代码:
第一, integer-array
在res/values/arrays.xml
:
<integer-array name="frag_home_ids">
<item>@drawable/frag_home_credit_return_money</item>
<item>@drawable/frag_home_transfer</item>
<item>@drawable/frag_home_balance</item>
<item>@drawable/frag_home_charge</item>
<item>@drawable/frag_home_finance_cdd</item>
<item>@drawable/frag_home_finance_ybjr</item>
<item>@drawable/frag_home_more</item>
</integer-array>
其次,以编程方式获取资源整数值:
TypedArray tArray = getResources().obtainTypedArray(
R.array.frag_home_ids);
int count = tArray.length();
int[] ids = new int[count];
for (int i = 0; i < ids.length; i++) {
ids[i] = tArray.getResourceId(i, 0);
}
//Recycles the TypedArray, to be re-used by a later caller.
//After calling this function you must not ever touch the typed array again.
tArray.recycle();
第三种,像这样调用整数值:
holder.iv.setImageResource(ids[position]);
当然可以通过这种方式得到string
、color
、integer
、layout
、menu
……的整数值。
希望这些代码对您有所启发。