更多资源类型
此页面定义了可以外部化的更多类型的资源,包括:
Bool
带有布尔值的XML资源。
Color
带有颜色值(十六进制颜色)的XML资源。
Dimension
带有维度值(带有度量单位)的XML资源。
ID
ML资源,为应用程序资源和组件提供唯一标识符。
Integer
包含整数值的XML资源。
Integer Array
提供整数数组的XML资源。
Typed Array
提供TypedArray的XML资源(可用于drawables数组)。
Bool
以XML定义的布尔值。
注意:bool是一个简单的资源,使用name属性中提供的值(而不是XML文件的名称)引用。因此,您可以将bool资源与一个XML文件中的其他简单资源组合在一个<resources>元素下。
文件位置:
res/values/filename.xml
文件名是任意的。 <bool>元素的名称将用作资源ID。
资源参考:
在Java中:R.bool.bool_name
在XML中:@ [package:] bool / bool_name
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool
name="bool_name"
>[true | false]</bool>
</resources>
元素:
<bool>
布尔值:true或false。
属性:
name
字符串。 bool值的名称。这将用作资源ID。
例子:
保存在res / values-small / bools.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="screen_small">true</bool>
<bool name="adjust_view_bounds">true</bool>
</resources>
此应用程序代码检索布尔值:
Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);
此布局XML使用属性的布尔值:
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/logo"
android:adjustViewBounds="@bool/adjust_view_bounds" />
Color
以XML定义的颜色值。颜色由RGB值和alpha通道指定。您可以在任何接受十六进制颜色值的地方使用颜色资源。当XML中需要可绘制资源时,您也可以使用颜色资源(例如,android:drawable =“@ color / green”)。
值始终以井号(#)开头,然后是以下列格式之一的Alpha-Red-Green-Blue信息:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
注意:颜色是使用name属性中提供的值(而不是XML文件的名称)引用的简单资源。因此,您可以将颜色资源与一个XML文件中的其他简单资源组合在一个<resources>元素下。
文件位置:
res/values/colors.xml
文件名是任意的。 <color>元素的名称将用作资源ID。
资源参考:
在Java中:R.color.color_name
在XML中:@ [package:] color / color_name
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name="color_name"
>hex_color</color>
</resources>
元素:
<resources>
需要。这必须是根节点。
没有属性。
<color>
如上所述的以十六进制表示的颜色。
属性:
name
字符串。颜色的名称。这将用作资源ID。
例子:
保存在res / values / colors.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
此应用程序代码检索颜色资源:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
此布局XML将颜色应用于属性:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Dimension
XML中定义的维度值。使用数字后跟度量单位指定维度。例如:10px,2in,5sp。 Android支持以下度量单位:
dp
密度无关像素 - 基于屏幕物理密度的抽象单位。这些单位相对于160 dpi(每英寸点数)的屏幕,其中1dp大致等于1px。在更高密度的屏幕上运行时,用于绘制1dp的像素数按照适合屏幕dpi的系数放大。同样,当在较低密度屏幕上时,用于1dp的像素数按比例缩小。 dp与像素的比率将随着屏幕密度而变化,但不一定是成正比的。使用dp单位(而不是px单位)是一种简单的解决方案,可以使布局中的视图尺寸适当调整以适应不同的屏幕密度。换句话说,它为不同设备的UI元素的实际大小提供了一致性。
sp
与比例无关的像素 - 这与dp单位类似,但它也可以根据用户的字体大小首选项进行缩放。建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户偏好调整它们。
pt
点数 - 基于屏幕物理尺寸的1/72英寸。
px
像素 - 对应屏幕上的实际像素。建议不要使用此计量单位,因为实际表示可能因设备而异;每个设备可以具有每英寸不同数量的像素,并且可以在屏幕上具有更多或更少的总像素。
mm
毫米 - 基于屏幕的物理尺寸。
in
英寸 - 基于屏幕的物理尺寸
注意:维度是使用name属性中提供的值(而不是XML文件的名称)引用的简单资源。因此,您可以将维度资源与一个XML文件中的其他简单资源组合在一个<resources>元素下。
文件位置:
res/values/filename.xml
文件名是任意的。 <dimen>元素的名称将用作资源ID。
资源参考:
在Java中:R.dimen.dimension_name
在XML中:@ [package:] dimen / dimension_name
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen
name="dimension_name"
>dimension</dimen>
</resources>
元素:
<resources>
必要。这必须是根节点。
没有属性。
<dimen>
如上所述,由浮子表示的尺寸,接着是测量单位(dp,sp,pt,px,mm,in)。
属性:
name
字符串。维度的名称。这将用作资源ID。
例子:
保存在res / values / dimens.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textview_height">25dp</dimen>
<dimen name="textview_width">150dp</dimen>
<dimen name="ball_radius">30dp</dimen>
<dimen name="font_size">16sp</dimen>
</resources>
此应用程序代码检索维度:
Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);
此布局XML将维度应用于属性:
<TextView
android:layout_height="@dimen/textview_height"
android:layout_width="@dimen/textview_width"
android:textSize="@dimen/font_size"/>
ID
XML中定义的唯一资源ID。使用您在<item>元素中提供的名称,Android开发人员工具在项目的R.java类中创建一个唯一的整数,您可以将其用作应用程序资源的标识符(例如,UI布局中的视图)或者在应用程序代码中使用的唯一整数(例如,作为对话框或结果代码的ID)。
注意:ID是使用name属性中提供的值(而不是XML文件的名称)引用的简单资源。因此,您可以在一个<resources>元素下将ID资源与一个XML文件中的其他简单资源相结合。另外,请记住ID资源不引用实际资源项;它只是一个唯一的ID,您可以将其附加到其他资源或作为应用程序中的唯一整数使用。
文件位置:
res/values/filename.xml
文件名是任意的。
资源参考:
在Java中:R.id.name
在XML中:@ [package:] id / name
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
type="id"
name="id_name" />
</resources>
元素:
<resources>
必要。这必须是根节点。
没有属性。
<item>
定义唯一ID。没有值,只有属性。
属性:
type
必须是“id”。
name
字符串。 ID的唯一名称。
例子:
保存在res / values / ids.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="button_ok" />
<item type="id" name="dialog_exit" />
</resources>
然后,此布局代码段使用Button小部件的“button_ok”ID:
<Button android:id="@id/button_ok"
style="@style/button_style" />
请注意,android:id值不包含ID引用中的加号,因为ID已存在,如上面的ids.xml示例中所定义。 (当您使用加号登录为XML资源指定ID时,格式为android:id =“@ + id / name” - 这意味着“名称”ID不存在且应该创建。)
作为另一个示例,以下代码段使用“dialog_exit”ID作为对话框的唯一标识符
showDialog(R.id.dialog_exit);
在同一个应用程序中,创建对话框时会比较“dialog_exit”ID:
protected Dialog onCreateDialog(int)(int id) {
Dialog dialog;
switch(id) {
case R.id.dialog_exit:
...
break;
default:
dialog = null;
}
return dialog;
}
Integer
XML中定义的整数。
注意:整数是使用name属性中提供的值(而不是XML文件的名称)引用的简单资源。因此,您可以将整数资源与一个XML文件中的其他简单资源组合在一个<resources>元素下。
文件位置:
res/values/filename.xml
文件名是任意的。 <integer>元素的名称将用作资源ID。
资源参考:
在Java中:R.integer.integer_name
在XML中:@ [package:] integer / integer_name
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer
name="integer_name"
>integer</integer>
</resources>
元素:
<resources>
必要。这必须是根节点。
没有属性。
<integer>
整数。
属性:
name
字符串。整数的名称。这将用作资源ID。
例子:
保存在res / values / integers.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="max_speed">75</integer>
<integer name="min_speed">5</integer>
</resources>
此应用程序代码检索整数:
Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);
Integer Array
XML中定义的整数数组。
注意:整数数组是使用name属性中提供的值(而不是XML文件的名称)引用的简单资源。因此,您可以将整数数组资源与一个XML文件中的其他简单资源组合在一个<resources>元素下。
文件位置:
res/values/filename.xml
文件名是任意的。 <integer-array>元素的名称将用作资源ID。
编译资源数据类型:
指向整数数组的资源指针。
资源参考:
在Java中:R.array.integer_array_name
在XML中:@ [package:] array.integer_array_name
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array
name="integer_array_name">
<item
>integer</item>
</integer-array>
</resources>
元素:
<resources>
需要。这必须是根节点。
没有属性。
<integer-array>
定义整数数组。包含一个或多个子<item>元素。
属性:
android:name
字符串。数组的名称。此名称将用作引用该数组的资源ID。
<item>
整数。该值可以是对另一个整数资源的引用。必须是<integer-array>元素的子元素。
没有属性。
例子:
保存在res / values / integers.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="bits">
<item>4</item>
<item>8</item>
<item>16</item>
<item>32</item>
</integer-array>
</resources>
此应用程序代码检索整数数组:
Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);
Typed Array
以XML格式定义的TypedArray。您可以使用它来创建其他资源的数组,例如drawable。请注意,数组不需要是同类的,因此您可以创建混合资源类型的数组,但是您必须知道数组中数据类型的位置和位置,以便您可以使用TypedArray正确的每个项目。 get...() 方法。
注意:类型化数组是使用name属性中提供的值(而不是XML文件的名称)引用的简单资源。因此,您可以在一个<resources>元素下将类型化数组资源与一个XML文件中的其他简单资源相结合。
文件位置:
res/values/filename.xml
文件名是任意的。 <array>元素的名称将用作资源ID。
编译资源数据类型:
指向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);