Android 术语Terminology

资源系统将一系列分散内容集合在一起形成最终的完整的资源功能,去帮助我们了解整个系统。

这里有一些核心概念以及组件的概要说明,你在开发中将可能使用到:

资产Asset:应用程序的独立的数据块。这包含所有从java 程序编译成的目标文件,图像(例如PNG 图片), XML 文件等等。这些文件以一种特定的方式组织在一起,在程序最后打包时,它们被捆绑进一个单独的ZIP 文件里。

aapt::Android 最终文件打包工具。这个工具产生最终程序的ZIP 文件。除了将资产元数据文件收集在一起,它也把资源定义解析到最终的二进制数据里。

资源表Resource Table: aapt 工具产生的特殊的文件,描述了所有在程序/包里的资源。

这个文件可以通过资源类来访问;它不能直接和应用程序接触。

资源Resource: 资源表里一条记录描述的是单一的命名值。大体上, 资源分成两种:元资源和包资源。

资源标识符Resource Identifier: 在资源表里所有的资源都被唯一的整数标识着。

所有的代码中(资源描述,XML 文件,Java 源代码)你可以直接使用符号名代替真实的整数数值。

元资源Primitive Resource: 所有元资源都可以被写成一个简单的字串,使用一定的格式可以描述资源系统里各种不同的基本类型:整数,颜色,字串,其他资源的引用,等等。

像图片以及XML 描述文件这些复杂资源,被以元字串资源储存,它们的值就是相关最终数据文件的路径。

包资源Bag Resource: 一种特殊类型的资源,不是简单的字符串,而是一个容纳名字/数值对的任意列表。

每个名字本身就是资源标识,每个值可以容纳相同类型的字符串格式的数据作为一个普通资源。

包资源支持继承:一个包里的数据能从其他包里继承,有选择地替换或者扩展能产生它自己的内容。

种类Kind: 资源种类是对于不同需求的资源标识符而言的。

例如,绘制资源类常常实例化绘制类的对象,所以这些包含颜色以及指向图片或XML 文件的字符串路径数据是原始数据。

其它常见资源类型是字符串(本地化字符串),颜色(基本颜色),布局(一个指向XML 文件的字串路径,它描述的是一个用户界面)以及风格(一个描述用户接口属性的包装资源)。

还有一个标准的“attr”资源类型,它定义了命名包装数据以及XML 属性的资源标识符。

风格Style: 包含包装资源类型的名字常常用来描述一系列用户接口属性。

例如,一个TextView的类可能会有一个描述界面风格的类来定义文本大小,颜色以及对齐方式。

在一个界面布局的XML 文件中,可以使用“风格” 属性来确定整体界面风格,它的值就是风格资源的名字。

风格类Style Class: 这里将详述一些属性资源类。其实数据不会被放在资源表本身,通常在源代码里它以常量的形式出现,这也可以使你在风格类或者XML 的标签属性里方便找到它的值。

例如,Android 平台里定义了一个“视图”的风格类,它包含所有标准视图的属性:画图区域,可视区域,背景等。

这个视图被使用时,它就会借助风格类去从XML 文件取得数据并将其载入到实例中。

配置Configuration: 对许多特殊的资源标识符,根据当前的配置,可以有多种不同的值。

配置包括地区(语言和国家),屏幕方向,屏幕分辨率,等等。当前的配置用来选择当资源表载入时哪个资源值生效。

主题Theme: 一个标准类型的资源能为一个特殊的上下文提供全局的属性值。

例如,当应用工程师写一个活动时,他能选择一个标准的主题去使用,白色的或者黑色的;这个类型能提供很多信息,如屏幕背景图片/颜色,默认文本颜色,按钮类型,文本编辑框类型,文本大小,等。

当布置一个资源布局时,控件(文本颜色,选中后颜色,背景)的大部分设置值取自当前主题;

如果需要,布局中的风格以及属性也可以从主题的属性中获得。

覆盖层Overlay: 资源表不能定义新类型的资源,但是你可以在其他表里替换资源值。

就像配置值,这可以在装载时候进行;它能加入新的配置值(例如,改变字串到新的位置),替换现有值(例如,将标准的白色背景替换成"Hello Kitty"的背景图片),修改资源包(例如修改主题的字体大小。白色主题字体大小为18pt)。

这实际上允许用户选择设备不同的外表,或者下载新的外表文件。