最近复习Android资源文件的内容,留下点记录以备后用。
Android中的资源主要是指存放在应用程序或者Framework相应包下/res中的内容。它们可以被本地化,如果必要的话会被编译成二进制文件以节约空间,并且,Eclipse开发环境可以为这些内容生成ID,存放在R.java文件中,以便程序内或其他XML文件中引用。/res文件夹只有固定的一些子目录结构,不能支持多层文件结构。
把一些最基本的内容列表如下。
资源类型 |
存放位置 |
生成ID的方式 |
在XML文件中的标签 |
在程序中使用 |
备注 |
颜色值 |
/res/values |
R.color,每个标签单独生成 |
color |
resources.getColor(R.color.name); |
|
字符串 |
/res/values |
R.string, 每个标签单独生成 |
string |
resources.getString(R.string.name); |
两种使用方法的区别是,后者返回本地化且包含样式的字符串。 |
字符串数组 |
/res/values |
R.array,每个标签单独生成 |
string-array |
resources.getStringArray(R.array.name); |
两种使用方法区别同上。 |
数量字符串 |
/res/values |
R.plurals,每个标签单独生成 |
plurals |
resources.getQuantityString(R.plurals.name); |
用来描述单复数对名词造成的区别。两种用法区别同上。 |
尺寸 |
/res/values |
R.dimen,每个标签单独生成 |
dimen |
float size = |
注意各种单位的区别。 |
图片 |
/res/drawable |
R.drawable,每个文件单独生成 |
N/A |
BitmapDrawable d = |
有gif、jpg、png、9.png等类型。 |
矩形颜色块 |
/res/values或/res/drawable |
R.drawable,每个标签单独生成 |
drawable |
ColorDrawable c = |
|
圆角矩形 |
/res/value或/res/drawable |
R.drawable,每个文件单独生成 |
shape |
GradiantDrawable roundedRectangle = |
|
布局 |
/res/layout |
R.layout,每个文件单独生成 |
LinearLayout、FrameLayout、RelativeLayout等等 |
setContentView(R.layout.layoutName); |
setContentView决定当前Activity用哪个布局文件,在此调用之后方可以使用findViewById来获取某个控件的引用。 |
任意xml |
/res/xml |
R.xml,每个文件单独生成 |
N/A |
XmlResourceParser parser = |
|
任意其他资源 |
/res/raw |
R.raw,每个文件单独生成 |
N/A |
InputStream is = |
除此之外,Android应用中还有一个assets文件夹,其中可以存放任意的文件夹结构和文件,不会被编译或者本地化。使用时需要:
AssetManager am = myActivity.getAssets();
InputStream is = am.open(filePathRelativeToAssetFolder);
// Do something to is
is.close();