Android 原始资源文件的使用详解原始资源文件的使用详解
本篇文章是对Android中原始资源文件的使用进行了详细的分析介绍,需要的朋友参考下
背景知识介绍背景知识介绍
与其他平台的应用程序一样,Android中的应用程序也会使用各种资源,比如图片,字串等,会把它们放入源码的相应文件夹
下面,如/res/drawable, /res/xml, /res/values/, /res/raw, /res/layout和/assets。Android也支持并鼓励开发者把UI相关的布局和
元素,用XML资源来实现。总结起来,Android中支持的资源有:
•颜色值 /res/values 以resources为Root的XML文件,定义形式为<color name>value</color>
•字串 /res/values 以resources为Root的XML文件<string name>value</string>
•图片 /res/drawable 直接放入,支持9 Patch可自由拉伸
•图片的颜色 /res/values 以resources为Root的XML文件,定义形式为<drawable name>value</drawable>
•单位资源 /res/values 以resources为Root的XML文件<dimen name>value</dimen>
•菜单 /res/menu 以menuo为root的XML文件
•布局 /res/layout 这个就是GUI的布局和元素
•风格和主题 /res/values 以resources为Root的XML文件<style name>value</style>
•动画 /res/anim 有二种:一个是帧动画(frame animation),也就是连续变换图片以animation-list为Root的
XML文件;另外一种就是补间动画(tweened animation),它对应于API中的Animation和AnimationSet,有translate、scale、
rotate、alpha四种,以set为root来定义,这个set就相当于AnimationSet
再说下目录:
•/res/anim 用于存放动画
•/res/drawable 存放图片,或等同于图片的资源如shape,或selector
•/res/menu 存放Menu
•/res/values 存放修饰性资源:字串,颜色,单位,风格和主题
•/res/layout 存放UI布局和元素
•/res/raw 存放运行时想使用的原始文件
•/assets 存放运行时想使用的原始文件
除了原始文件目录/res/raw和/assets以外,其他的资源在编译的时候都会被第三方软件aapt进行处理,一个是把图片和XML文
件进行处理,例如把XML编译成为二进制形式;另外处理的目的就是生成R.java文件,这个文件是访问资源时必须要用到的。
/res目录下面的所有文件都会映射到R.java文件中,以整数Id的形式被标识,相同类型的资源被一个内部类来封装,一个
R.java的文件类似于这样:
复制代码 代码如下:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.android.explorer;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int action=0x7f060004;
public static final int description_panel=0x7f060001;
public static final int fileinfo=0x7f060003;
public static final int filename=0x7f060002;
public static final int linearlayout_test_1=0x7f060005;
public static final int linearlayout_test_2=0x7f060006;
public static final int linearlayout_test_3=0x7f060007;
public static final int thumbnail=0x7f060000;
}
public static final class layout {
public static final int fileant_list_item=0x7f030000;
public static final int linearlayout_test=0x7f030001;
}
public static final class raw {
public static final int androidmanifest=0x7f040000;
}
public static final class string {
public static final int app_name=0x7f050001;
public static final int hello=0x7f050000;
}