资源系统将一系列分散内容集合在一起形成最终的完整的资源功能,去帮助我们了解整个 系统。这里有一些核心概念以及组件的概要说明,你在开发中将可能使用到:
最终文件: 应用程序的独立的数据包。这包含所有从java程序编译成的目标文件,图像 (例如PNG图片), XML文件等等。这些文件以一种特定的方式组织在一起,在程序打包最后时,它们被打包成 一个独立的ZIP文件。
aapt: Android最终文件打包工具。这个工具产生最终程序的ZIP文件。除了将最终的元数据 文件打包在一起,它也解析资源定义到最终的二进制数据里。
资源表:aapt工具产生的特殊的文件,描述了所有在程序/包里的资源。这个文件可以通过 资源类来访问;它不能直接和应用程序接触。
资源: 资源表里一条记录描述的是单一的命名值。大体上, 资源分成两种:基本的和包装的.
资源标识符: 在资源表里所有的资源都被唯一的整数标识着。 所有的代码中(资源描述,XML 文件,Java源代码)你可以直接使用符号名代替真实的整数数值。
基本资源: 所有基本资源都可以被写成一个简单的字串,使用一定的格式可以描述资源 系统里各种不同的基本类型: 整数,颜色,字串,其他资源的引用,等等。像图片以及XML描述文件这些复杂资源, 被以基本字串资源储存,它们的值就是相关最终数据文件的路径。
包装资源: 有一种特殊类型的资源,不是简单的字符串,而是有一个随意的名字/数值配对列表。 每个数值可以对应它本身的资源标识,每个值可以持相同类型的字符串格式的数据作为一个正常的资源。包装资源支持 继承:一个包里的数据能从其他包里继承,有选择地替换或者扩展能产生你自己需要的内容。
种类: 资源种类是对于不同需求的资源标识符而言的。例如,绘制资源类常常实例化绘制类的对象,所以这些包含颜色以及指向图片或XML文件的字符串路径数据是原始数据。其它常见资源类型是字符串(本地化字符串),颜色(基本颜色),布局(一个指向XML文件的字串路径,它描述的是一个用户界面)以及风格(一个描述用户接口属性的包装资源)。还有一个标准的"attr"资源类型,它定义了命名包装数据以及XML属性的资源标识符。
风格: 包含包装资源类型的名字常常用来描述一系列用户接口属性。例如,一个TextView的类可能会有一个描述界面风格的类来定义文本大小,颜色以及对齐方式。在一个界面布局的XML文件中,可以使用"风格" 属性来确定整体界面风格,它的值就是风格资源的名字。
风格类: 这里将详述一些属性资源类。其实数据不会被放在资源表本身,通常在源代码里它以常量的形式出现,这也可以使你在风格类或者XML的标签属性里方便找到它的值。例如,Android平台里定义了一个"视图"的风格类,它包含所有标准视图的属性:画图区域,可视区域,背景等。这个视图被使用时,它就会借助风格类去从XML文件取得数据并将其载入到实例中。
配置: 对许多特殊的资源标识符,根据当前的配置,可以有多种不同的值。 配置包括地区(语言和国家),屏幕方向,屏幕分辨率,等等。当前的配置用来选择当资源表载入 时哪个资源值生效。
主题: 一个标准类型的资源能为一个特殊的上下文提供全局的属性值。 例如,当应用工程师写一个活动时,他能选择一个标准的主题去使用,白色的或者黑色的;这个类型 能提供很多信息,如屏幕背景图片/颜色,默认文本颜色,按钮类型,文本编辑框类型,文本大小,等。 当布置一个资源布局时,控件(文本颜色,选中后颜色,背景)的大部分设置值取自当前主题; 如果需要,布局中的风格以及属性也可以从主题的属性中获得。
覆盖层: 资源表不能定义新类型的资源,但是你可以在其他表里替换资源 值。就像配置值,这可以在装载时候进行;它能加入新的配置值(例如,改变字串到新的位置), 替换现有值(例如,将标准的白色背景替换成"Hello Kitty"的背景图片),修改资源包(例如修改主题 的字体大小。白色主题字体大小为18pt)。这实际上允许用户选择设备不同的外表,或者下载新的外表 文件。
资源引用 这份文档提供了不同类型资源的详细列表,并提供了如何在Java代码中使用资源以及如何引用资源的 描述。