zoukankan      html  css  js  c++  java
  • Android 4.0 开发者指南(28) —— Resource Types More Types

    前言

      本章内容为Android开发者指南的Framework Topics/Application Resources/Resource Types/More Types章节,译为"更多资源类型",版本为Android 4.0 r1,翻译来自:"呆呆大虾",欢迎访问他的微博:"http://weibo.com/popapa",再次感谢"呆呆大虾" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。

    声明

      欢迎转载,但请保留文章原始出处:)

        博客园:http://www.cnblogs.com/

        Android中文翻译组:http://goo.gl/6vJQl

     

    Resources Types – More Types

    译者署名: 呆呆大虾

    译者微博:http://weibo.com/popapa

    版本:Android 4.0 r1

    原文

    http://developer.android.com/guide/topics/resources/more-resources.html

     

    更多资源类型

    本页定义了其它一些具体的资源类型,包括:

    Bool

    存放布尔值的XML资源。

    Color

    存放颜色值的XML资源(十六进制颜色)。

    Dimension

    存放数量值的XML资源(带计量单位)。

    ID

    为应用程序的资源和控件提供唯一标识的XML资源。

    Integer

    存放整数值的XML资源。

    Integer Array

    提供整数数组的XML资源。

    Typed Array

    提供TypedArray(用于Drawable对象数组)的XML资源。

     

    Bool

    XML格式定义的布尔值。

    注意:bool是简单类型资源,是用名称(name属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把bool资源和其他简单类型资源一起放入一个<resources>元素下。

    文件位置:

    res/values/filename.xml

    文件名可随意指定。<bool>元素的名称name将被用作资源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>

    元素:

    <resources>

    必填项必须是根节点。

    无属性。

    <bool>

    布尔值:truefalse

    属性:

    name

    String类型。布尔值的名称,用作资源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>

    以下应用程序代码取出bool值:

    Resources res = getResources(); 

    boolean screenIsSmall = res.getBoolean(R.bool.screen_small);

    以下布局(layoutXMLbool资源用于属性:

    <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通道指定颜色值。可以在任何接受十六进制颜色值的地方使用color资源。还能在XML里用到drawable资源时使用color 资源(比如:android:drawable="@color/green")。

    颜色值总是以(#)字符开头,后面跟着Alpha--绿-蓝信息,格式如下之一:

    ·       #RGB

    ·       #ARGB

    ·       #RRGGBB

    ·       #AARRGGBB

    注意:color是简单类型资源,是用名称(name)属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把color资源和其他简单类型资源一起放入一个<resources>元素下。

     

    文件位置:

    res/values/colors.xml

    文件名可随意指定。<color>元素的名称name将被用作资源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

    String类型。颜色的名称,用作资源ID

     

    示例:

    存放在res/values/colors.xmlXML文件:

    <?xml version="1.0" encoding="utf-8"?> 

    <resources> 

       <color name="opaque_red">#f00</color> 

       <color name="translucent_red">#80ff0000</color> 

    </resources>

    以下应用程序代码取出color资源:

    Resources res = getResources(); 

    int color = res.getColor(R.color.opaque_red);

    以下布局(layoutXMLcolor资源用于属性:

    <TextView 

        android:layout_width="fill_parent" 

        android:layout_height="wrap_content" 

        android:textColor="@color/translucent_red" 

        android:text="Hello"/>

     

    Dimension

    XML格式定义的数量值。数量值是用数字后跟度量单位来指定的。例如:10px, 2in, 5spAndroid支持以下度量单位:

    dp

    分辨率无关的像素(Pixel)单位,一种基于屏幕的物理(像素)分辨率的抽象单位。此单位基于一个160 dpi(每英寸点数)的屏幕,所以160dp常常是1英寸且与屏幕像素分辨率无关。dp和像素的比率会随着屏幕密度而变化,但不一定成正比。建议用于在layout里指定View尺寸 ,这样UI在不同屏幕上能自动缩放而显示出相同的大小。(“dip”“dp”同义,编译器都可接受,虽然“dp”更近似于“sp”。)

    sp

    缩放无关的像素单位,类似于dp,但还会根据用户的字体大小设置进行缩放。建议用于指定字体大小,这样根据屏幕分辨率和用户设置都能自动调整。

    pt

    点,基于屏幕实际尺寸,对应1/72英寸。

    px

    像素,与屏幕实际像素一致。这是个不建议使用的单位,因为在不同设备上的实际表现会差异很大,每种设备每英寸的像素数可能不同,屏幕上的总像素数亦可能更多或更少。

    mm

    毫米,基于屏幕物理尺寸。

    in

    英寸,基于屏幕物理尺寸。

    注意:dimension是简单类型资源,是用名称(name)属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把dimension资源和其他简单类型资源一起放入一个<resources>元素下。

    文件位置:

    res/values/filename.xml

    文件名可随意指定。<dimen>元素的名称name将被用作资源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>

    度量值,用浮点数表示,后跟一个计量单位(dpspptpxmmin),如上所述。

    属性:

    name

    String类型。度量的名称,用作资源ID

     

    示例:

    存放在res/values/dimens.xmlXML文件:

    <?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>

    以下应用程序代码取出dimension资源:

    Resources res = getResources(); 

    float fontSize = res.getDimension(R.dimen.font_size);

    以下layout XMLdimensions用于属性:

    <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布局中的一个View,或者在应用程序代码中被用作一个唯一的整数(比如:对话框的ID或一个返回值)。

    注意:ID是简单类型资源,是用名称(name)属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把ID资源和其他简单类型资源一起放入一个<resources>元素下。而且,请记住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

    String类型。ID的唯一名称

     

    示例:

    存放在res/values/ids.xmlXML文件:

    <?xml version="1.0" encoding="utf-8"?> 

    <resources> 

        <item type="id" name="button_ok" /> 

        <item type="id" name="dialog_exit" /> 

    </resources>

    以下layout段将“button_ok”用于Button控件ID

    <Button android:id="@id/button_ok" 

        style="@style/button_style" />

    注意android:id的值:ID引用里不含加号“+”了,因为这个ID已经在上面的ids.xml中定义过了。(如果XML资源里用加号指定一个ID—类似格式android:id="@+id/name"那就意味着“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格式定义的整数资源。

    注意:integer是简单类型资源,是用名称(name属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把integer资源和其他简单类型资源一起放入一个<resources>元素下。

    文件位置:

    res/values/filename.xml

    文件名可随意指定。<integer>元素的名称name将用作资源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

    String类型。整数的名称。用作资源ID

    示例:

    存放在res/values/integers.xmlXML文件:

    <?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格式定义的整数数组。

    注意: integer array是简单类型资源,是用名称(name)属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把integer array资源和其他简单类型资源一起放入一个<resources>元素下。

     

    文件位置:

    res/values/filename.xml

    文件名可随意指定。<integer-array>元素的名称name将用作资源ID

     

    编译后的资源数据类型:

    指向整数数组的指针。

     

    资源引用:

    Java代码:R.array.string_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>子元素。

    属性:

    name

    String类型。数组的名称。作为资源ID用于引用数组。

    <item>

    整数。可以是指向另一个整数资源的引用。必须是<integer-array> 的子元素。

    无属性。

    示例:

    存放在res/values/integers.xmlXML文件:

    <?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>

    取出integer array的应用程序代码:

    Resources res = getResources(); 

    int[] bits = res.getIntArray(R.array.bits);

     

    Typed Array

    XML格式定义的TypedArray。用于创建其它资源的数组,比如drawable。注意数组元素不必是同一类型的,可以创建多种资源组成的数组。但必须小心处理数组内不同的数据类型,利用TypedArrayget...()属性正确地读取每个数据项。

    注意:typed array是简单类型资源,是用名称(name)属性(而非XML文件名)来直接引用的。因此,在一个XML文件里,可以把typed array资源和其他简单类型资源一起放入一个<resources>元素下。

     

    文件位置:

    res/values/filename.xml
    文件名可随意指定。<array>元素的名称name将用作资源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

    String类型。数组的名称。作为资源ID用于引用数组。

    <item>

    资源。可以是指向一个资源的引用,或是一个简单数据类型。必须是<array>的子元素。

    无属性。

     

    示例:

    存放在res/values/ arrays.xmlXML文件:

    <?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.icons); 

    int color = colors.getColor(0,0);

     

  • 相关阅读:
    POJ 2236 Wireless Network(并查集)
    POJ 2010 Moo University
    POJ 3614 Sunscreen(贪心,区间单点匹配)
    POJ 2184 Cow Exhibition(背包)
    POJ 1631 Bridging signals(LIS的等价表述)
    POJ 3181 Dollar Dayz(递推,两个long long)
    POJ 3046 Ant Counting(递推,和号优化)
    POJ 3280 Cheapest Palindrome(区间dp)
    POJ 3616 Milking Time(dp)
    POJ 2385 Apple Catching(01背包)
  • 原文地址:https://www.cnblogs.com/over140/p/2222255.html
Copyright © 2011-2022 走看看