## 类型化数组
在 XML 中定义的`[TypedArray](https://developer.android.google.cn/reference/android/content/res/TypedArray)`。您可以使用这种资源创建其他资源(例如可绘制对象)的数组。请注意,此类数组不要求所含的资源具有相同的类型,因此您可以创建混合资源类型的数组,但必须知道数组中有哪些数据类型及其位置,以便可以使用`[TypedArray](https://developer.android.google.cn/reference/android/content/res/TypedArray)`的`get...()`方法正确获取每一项数据。
**注意**:类型化数组是使用`name`属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将类型化数组资源与其他简单资源合并到一个`<resources>`元素下。
### 文件位置:
`res/values/*filename*.xml`
该文件名可以任意设置。`<array>`元素的`name`将用作资源 ID。
编译后的资源数据类型:
指向`[TypedArray](https://developer.android.google.cn/reference/android/content/res/TypedArray)`的资源指针。
### 资源引用:
在 Java 中:`R.array.*array_name*`
在 XML 中:`@[*package*:]array.*array_name*`
### 语法:
~~~
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array
name="integer_array_name">
<item>resource</item>
</array>
</resources>
~~~
### 元素:
* `<resources>`
**必需**。该元素必须是根节点。
没有属性。
* `<array>`
定义一个数组。包含一个或多个`<item>`子元素。
属性:
* `android:name`
字符串。数组的名称。此名称将用作引用数组的资源 ID。
* `<item>`
通用资源。该值可以是对资源或简单数据类型的引用。必须是`<array>`元素的子元素。
没有属性。
### 示例:
保存在`res/values/arrays.xml`的 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>
~~~
以下应用代码会检索每个数组,然后获取每个数组中的第一个条目:
~~~
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);
~~~