少壮不努力,老大徒伤悲
- 《长歌行》 汉乐府html
Android应用程序主要由两部份内容组成:代码和资源。资源是代码使用的附加文件和静态内容,例如位图,布局,用户界面字符串,动画指令等。 咱们应始终将应用程序资源和代码分离来,这给咱们带来了如下几个好处:java
外部化应用程序资源后,可使用项目R类中生成的资源ID访问它们。本文主要介绍如何在Android项目中对资源进行分组,为特定设备配置提供备用资源或是访问它们等其余内容将在后续的文章介绍。android
Android应用程序资源能够分为两大类,分别是assets和res:数组
AssetManager am= getAssets();
InputStream is = assset.open("filename");
复制代码
MyProject/
src/
MyActivity.java
res/
drawable/
graphic.png
layout/
main.xml
info.xml
mipmap/
icon.png
values/
strings.xml
复制代码
咱们须要将每种类型的资源放在项目res/目录的特定子目录中,资源目录名称很重要,以下表所示:bash
目录 | 资源类型 |
---|---|
animator/ | 定义属性动画(property animations.)的 XML文件; |
anim/ | 定义补间动画(tween animations)的XML文件。(属性动画也能够保存在此目录中,但属性动画应首选animator/目录以区分这两种类型); |
color/ | 定义颜色状态列表的XML文件。可参考 颜色状态列表资源; |
drawable/ | 位图文件(.png,.9.png,.jpg,.gif)或可编译成如下可绘制资源子类型的XML文件:Bitmap files、Nine-Patches (re-sizable bitmaps)、State lists、Shapes、Animation drawables等,更多请查看Drawable Resources; |
mipmap/ | 用于存储启动图标(不一样密度)的可绘制文件(drawable) |
layout/ | 定义用户界面布局的XML文件 |
menu/ | 定义应用程序菜单的XML文件,例如“选项菜单”,“上下文菜单”或“子菜单”; |
raw/ | 这类资源以任意格式的文件保存在res/raw目录下。你能够经过(InputStream)Resources.openRawResource(R.raw.filename)打开raw文件; 可是,若是须要访问原始文件名和文件层次结构,能够考虑在assets/目录中保存一些资源(而不是res/raw/)。文件中assets/没有给出资源ID,所以您只能经过AssetManager去访问它们。 |
values/ | 包含简单值的XML文件,例如字符串,整数和颜色。 除了values/目录外其余 res/下的目录的XML资源文件都是基于XML文件名定义单个资源,而values/下的xml资源文件则是描述多个资源。 对于values/中的xml文件,该 < resources > 元素下的每一个子元素都定义一个资源。例如,< string >元素建立 R.string资源,< color >元素建立R.color 资源。 因为每一个资源都使用本身的XML元素定义,所以您能够根据须要为文件命名,并将不一样的资源类型放在一个文件中。可是,为清楚起见,您可能但愿将不一样的资源类型放在不一样的文件中。例如,如下是您能够在此目录中建立的资源的一些文件名约定: array.xml --- 用于资源数组(类型化数组); colors.xml --- 用于颜色值; dimens.xml --- 用于维度值; strings.xml --- 用于字符串值; styles.xml --- 用于样式。 |
xml/ | 在运行时能够经过Resources.getXML()读取的任意XML文件。各类XML配置文件必须保存在这里; |
font/ | 字体文件与扩展如 .ttf,.otf,或.ttc,其中包括一个< font-family >元素的XML文件; |
永远不要将资源文件直接保存在 res/目录中 - 它会致使编译器错误ide
上述11种类型(不含assets)的资源文件,除了raw类型资源,以及Bitmap文件的drawable类型资源以外,其它的资源文件均为文本格式的XML文件,它们在打包的过程当中,会被编译成二进制格式的XML文件,每个res资源在编译的打包完成以后,都会被分配一个资源ID,这些资源ID被终会被定义为Java常量值,保存在一个R.java文件中,与应用程序的其它源文件一块儿被编译到程序中,这样咱们就能够在程序或者资源文件中经过这些ID常量来访问指定的资源。布局
下表是每种类型的简短摘要,后续会陆续补充项目资源目录(res/)中提供的特定类型的应用程序资源的用法、格式和语法:字体
资源类型 | 简短摘要 |
---|---|
动画资源 | 定义预约动画,含属性、补间、逐帧动画。属性动画保存在res/animator/目录并从R.anim类中访问,补间动画保存在res/anim/目录并从R.anim类中访问,帧动画保存在res/drawable/目录并从R.drawable类中访问,更多请查看Animation Resources |
颜色状态列表资源 | 定义基于View状态更改的颜色资源,保存在res/color/目录并从R.color上访问。更多请查看Color State List Resource |
drawable | 使用位图或XML定义各类图形,保存在res/drawable/目录并从R.drawable上访问。更多请查看Drawable Resources |
布局资源 | 定义应用程序UI的布局,保存在res/layout目录并从R.layout上访问。更多请查看Layout Resource |
菜单资源 | 定义应用程序菜单的内容,保存在res/menu目录并从R.menu上访问。更多请查看Menu Resource |
字符串资源 | 定义字符串,字符串数组和复数(包括字符串格式和样式),保存在res/values目录并从R.string,R.array以及R.plurals上访问。更多请查看String Resources |
style | 定义UI元素的外观和格式,保存在res/value目录并从R.style上访问。更多请查看Style Resource |
字体资源 | 定义字体系列并在XML中包含自定义字体,保存在res/font目录并从R.font上访问。更多请查看Font Resources |
更多资源类型 | 将其余原始值定义为静态资源,包括如下内容: 1. Bool : 带有布尔值的XML资源 2. Color : 带有颜色值(十六进制颜色)的XML资源 3.Dimension : 带有维度值(带有度量单位)的XML资源 4. ID : XML资源,为应用程序资源和组件提供惟一标识符 5. Integer : 包含整数值的XML资源 6. Integer Array : 提供整数数组的XML资源 7. Typed Array : 提供TypedArray(可用于drawable数组)的XML资源源 更多请查看More resource types |