本帖最后由 Celine 于 2012-11-25 02:16 编辑
Android 支持字符串、位图以及其他很多种类型的资源。
每一种资源的语法、格式以及存放的位置,都会根据其类型的不同而不同。通常,你创建的资源一般来自于三种文件: XML 文件(除位图和raw 之外的任何文件)、位图文件(图像)以及Raw 文件(除前面以外的其他东西,如声音文件,等等)。
事实上,XML 文件也有两种不同的类型:被原封不动地编译进包内的文件和被aapt 用来产生资源的文件。
这里有一个每种资源类型的列表,包括文件格式、文件描述以及XML 文件类型的细节。
你可以在你的项目中的res/目录的适当的子目录中创建和保存资源文件。
Android 有一个资源编译器(aapt),它依照资源所在的子目录及其格式对其进行编译。
[table]
[tr][td=125] [align=left]目录 Directory[/align] [/td][td=452][align=right][align=left]资源类型 Resource Types[/align][/align][/td][/tr]
[tr][td=125][align=left]
[align=left]res/anim/[/align][/align][/td][td=452][align=right][align=left]XML 文件,它们被编译进逐帧动画(frame by frame animation)或补间 动画(tweened animation)对象[/align][/align][/td][/tr]
[tr][td=125]
[align=left]res/drawable[/align]
[align=left]/[/align] [/td][td=452][align=right][align=left].png、.9.png、.jpg 文件,它们被编译进以下的 Drawable 资源子类型中: 要获得这种类型的一个资源,可以使用 Resource.getDrawable(id)[/align]
[align=left]位图文件[/align] [align=left]9-patches(可变尺寸的位图)[/align]
[align=left]为了获取资源类型,使用 mContext.getResources().getDrawable(R.drawable.imageI d)[/align]
[align=left]注意:放在这里的图像资源可能会被 aapt工具自动地进行无损压缩 优化。比如,一个真彩色但并不需要 256 色的 PNG 可能会被转换为 一个带调色板的 8 位 PNG。这使得同等质量的图片占用更少的资源。 所以我们得意识到这些放在该目录下的二进制图像在生成时可能会 发生变化。如果你想读取一个图像位流并转 换成一个位图(bitmap),[/align] [align=left]请把图像文件放在 res/raw/目录下,这样可以避免被自动优化。[/align][/align][/td][/tr]
[tr][td=125][align=left]
[align=left]res/layout/[/align][/align][/td][td=452][align=right][align=left]被编译为屏幕布局(或屏幕的一部分)的 XML 文件。参见布局声明[/align] [align=left](Declaring Layout)[/align][/align][/td][/tr]
[tr][td=125][align=left]
[align=left]res/values/[/align]
[/align][/td][td=452]可以被编译成很多种类型的资源的 XML 文件。
注意: 不像其他的 res/文件夹,它可以保存任意数量的文件,这些文 件保存了要创建资源的描述,而不是资源本身。 XML 元素类型控制 这些资源应该放在 R 类的什么地方。
尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件
(文件命名的惯例是将元素类型包含在该名称之中):
array.xml 定义数据colors.xml 定义 color drawable和颜色的字符串值(color stringvalues)。
使用 Resource.getDrawable()和 Resources.getColor()分 别获得这些资源。
dimens.xml 定义尺寸值(dimension value)。使用 Resources.getDimension()获得这些资源。
strings.xml 定义字符串(string)值(使用 Resources.getString()或者 Resources.getText()获取这些资源。 getText()会保留在 UI 字符串上应用的丰富的文本样式)。
styles.xml 定义样式(style)对象。[/td][/tr]
[tr][td=125]
[align=left]res/xml/[/align] [/td][td=452][align=right][align=left]任意的 XML 文件,在运行时可以通过调用 Resources.getXML()读取。[/align][/align][/td][/tr]
[tr][td=125][align=left]
[align=left]res/raw/[/align][/align][/td][td=452][align=right][align=left]直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译 产生的压缩文件中。要使用这些资源,可以调用 Resources.openRawResource(),参数是资源的 ID,即 R.raw.somefilename。[/align][/align][/td][/tr]
[/table]
资源被编进最终的APK 文件中。Android 创建了一个封装类,叫做R,在代码中你可以使用它来引用这些资源。
R 包含了根据资源文件的路径和名称命名的子类。