Android官方文档—APP资源(Resource Types) (More Types)

更多资源类型

此页面定义了可以外部化的更多类型的资源,包括:

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);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值