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



转自:http://www.cnblogs.com/over140/archive/2011/10/24/2222255.html

目录
相关文章
|
Android开发 Swift iOS开发
iOS和安卓作为主流操作系统,开发者需了解两者差异以提高效率并确保优质用户体验。
【10月更文挑战第1天】随着移动互联网的发展,智能手机成为生活必需品,iOS和安卓作为主流操作系统,各有庞大的用户群。开发者需了解两者差异以提高效率并确保优质用户体验。iOS使用Swift或Objective-C开发,强调简洁直观的设计;安卓则采用Java或Kotlin,注重层次与动画。Swift和Kotlin均有现代编程特性。此外,iOS设备更易优化,而安卓需考虑更多兼容性问题。iOS应用仅能通过App Store发布,审核严格;安卓除Google Play外还可通过第三方市场发布,审核较宽松。开发者应根据需求选择合适平台,提供最佳应用体验。
412 3
|
8月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
386 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
584 0
|
安全 Android开发 iOS开发
深入探索iOS与Android系统架构差异及其对开发者的影响
本文旨在通过对比分析iOS和Android两大移动操作系统的系统架构,探讨它们在设计理念、技术实现及开发者生态方面的差异。不同于常规摘要仅概述内容要点,本摘要将简要触及核心议题,为读者提供对两大平台架构特点的宏观理解,铺垫
|
监控 算法 数据可视化
深入解析Android应用开发中的高效内存管理策略在移动应用开发领域,Android平台因其开放性和灵活性备受开发者青睐。然而,随之而来的是内存管理的复杂性,这对开发者提出了更高的要求。高效的内存管理不仅能够提升应用的性能,还能有效避免因内存泄漏导致的应用崩溃。本文将探讨Android应用开发中的内存管理问题,并提供一系列实用的优化策略,帮助开发者打造更稳定、更高效的应用。
在Android开发中,内存管理是一个绕不开的话题。良好的内存管理机制不仅可以提高应用的运行效率,还能有效预防内存泄漏和过度消耗,从而延长电池寿命并提升用户体验。本文从Android内存管理的基本原理出发,详细讨论了几种常见的内存管理技巧,包括内存泄漏的检测与修复、内存分配与回收的优化方法,以及如何通过合理的编程习惯减少内存开销。通过对这些内容的阐述,旨在为Android开发者提供一套系统化的内存优化指南,助力开发出更加流畅稳定的应用。
480 31
|
IDE Android开发 iOS开发
探索安卓与iOS系统的技术差异:开发者的视角
本文深入分析了安卓(Android)与苹果iOS两大移动操作系统在技术架构、开发环境、用户体验和市场策略方面的主要差异。通过对比这两种系统的不同特点,旨在为移动应用开发者提供有价值的见解,帮助他们在不同平台上做出更明智的开发决策。
|
安全 Java Linux
深入解析Android系统架构及其对开发者的意义####
【10月更文挑战第21天】 本文旨在为读者揭开Android操作系统架构的神秘面纱,探讨其如何塑造现代移动应用开发格局。通过剖析Linux内核、硬件抽象层、运行时环境及应用程序框架等关键组件,揭示Android平台的强大功能与灵活性。文章强调了理解Android架构对于开发者优化应用性能、提升用户体验的重要性,并展望了未来技术趋势下Android的发展方向。 ####
500 0
|
Java API Android开发
安卓与iOS开发环境的差异及其对开发者的影响
在移动应用开发的广阔天地中,安卓和iOS这两大操作系统平台各自拥有独特的开发环境。本文旨在深入探讨这两个平台在开发语言、工具、API等方面的主要差异,并分析这些差异如何影响开发者的决策过程及最终产品的用户体验。通过比较分析,我们将揭示不同环境下的开发策略,以及它们对市场趋势的潜在影响。
252 27
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
1475 3
|
IDE Java Android开发
安卓与iOS开发环境的差异及其对开发者的影响
在数字时代的浪潮中,移动应用成为人们生活的延伸。两大操作系统——安卓与iOS,如同两座技术高峰,各自占据着半壁江山。本文将探索这两个平台的开发环境差异,并讨论这些差异如何塑造开发者的编程习惯与职业选择。我们将从工具和语言、用户界面设计、系统架构、市场定位以及开发社区和资源五个方面进行比较,旨在为开发者提供一份实用的指南,帮助他们在不断变化的技术世界中,找到适合自己的发展路径。
230 3