一、Android关键资源
Android的res目录下的资源都以XML文件格式配置描述,该目录下所有的资源ADT都会生成可由java代码访问的R.java类,R.java类对所有的资源项都会生成一个唯一的int类型ID;
资源类型 | 位置 | 说明 | R.java访问 | XML节点 | 函数访问 |
颜色 | /res/values/any-file | 表示颜色编码标识符资源 | R.color.* | /resources/color | activity.getResources.getColor(R.Color.colorID) |
字符串 | /res/values/any-file | 表示字符串资源 | R.string.* | /resources/string | activity.getString(R.string.stringID) |
字符串数组 | /res/values/any-file | 表示一个作为了符串数组的资源 | R.array.* | /resources/string-array | activity.getResources().getStringArray(R.array.arrayID) |
复数(plural) | /res/values/any-file | 根据数量值表示一个合适的字符串集合,类似字符串美枚举 | R.plural.* | /resources/plurals | activity.getResources().getQuantityString(R.plural.pluralID,数值标量,参数) |
尺寸 | /res/values/any-file | 表示Android中各种元素或视图的尺寸或大小 | R.dimen.* | /resources/dimen | activity.getResources().getDimension(R.dimen.dimenID) |
图像 | /res/drawable/multiple-files | 表示图像资源 | R.drawable.* | /resources/drawable | activity.getResources().getDrawable(R.drawable.drawableID) |
色块图 | /res/values/any-file /res/drawable/multiple-files | 表示用作视图背景的矩形色块或普通图形对象,比如位图。 | R.drawable.* | /resources/drawable | activity.getResources().getDrawable(R.drawable.drawableID) |
任意XML文件 | /res/xml/*.xml | 任意XML资源文件 | R.xml.* | | activity.getResources().getXml(R.xml.xmlID) |
任意原始资源 | /res/raw/*.* | 任意未编译的二进制文件或文本文件 | R.raw.* | | activity.getResources().openRawResource(R.raw.rawID) |
任意原始资产 | /assets/*.*/*.* | /assets子目录下任意子目录中的任意文件,这些文件不是真正的资源,只是原始文件,与/res资源子目录不同,这个目录支持任意深度的子目录。 | | | activity.getAssets() |
二、资源目录结构
/res/values/strings.xml
/colors.xml
/dimens.xml
/attrs.xml
/styles.xml
/drawable/*.png
/*.jpg
/*.gif
/*.9.png
/anim/*.xml
/layout/*.xml
/raw/*.*
/xml/*.xml
/assets/*.*/*.*
三、资源引用语法
无论什么类型的Android资源都使用它们在java源代码中的ID来标识(或引用)。将id分配给xml文件中资源的语法称为资源引用语法。@+id/实际id名称:表示这个ID如果不存在,将创建他。
语法:@[package:]type/name
type对应于R.java中一种可用的资源类型命名空间,包括:
- R.drawable;
- R.id;
- R.layout;
- R.string;
- R.attr;
- R.plural;
- R.array;
XML资源引用语法中相应的类型为:
- Drawable;
- id;
- layout;
- string;
- attr;
- plurals;
- sting-array;
四、其它备注资源目录配置修饰符
- mccAAA:AAA是移动设备国家代码
- mncAAA:AAA是运营商/网络代码
- en-rUS:语言和区域
- small、normal、large、xlarge:屏幕大小
- long、notlong:屏幕类型
- port、land:纵向或横向
- car、desk:扩展坞类型
- night、notnight:晚上或白天
- ldpi、mdpi、hdpi、xhdpi、nodpi:屏幕像素密度
- notouch、stylus、finger:屏幕种类
- keysexposed、keyssoft、keyshidden:键盘种类
- nokeys、qwerty、12key:键数
- navexposed、navhidden:隐藏或显示导航键
- nonav、dpad、trackball、wheel:导航设备类型
- v3、v4、v7:API级别