android工程 res目录结构
res目录是存放工程内资源文件的,目录结构如下,资源一般包括9种
- animator 属性动画资源
- anim 帧动画资源
- color 颜色资源
- drawable 图片资源
- layout 布局资源
- menu 菜单资源
- raw 其他资源
- values 值资源
- xml 任意的xml资源。
一、animator
定义属性动画
二、anim
定义帧动画(属性的动画也可以保存在这个目录,但animator/目录是首选的属性动画来区分这两种类型。
三、color
定义颜色状态列表的XML文件。查看颜色状态列表资源
四、drawable
可以存放位图文件(png、.9.png、jpg、gif 等)、编译成以下drawable文件的XML文件。
- Bitmap files 位图文件
- Nine-Patches (re-sizable bitmaps) .9 图片
- State List 状态列表
- Shapes 形状
- Animation drawables 动画图片
- Other drawables 其他drawables
五、layout
布局资源文件
六、menu
菜单资源文件
七、raw
任意文件,可以保留原始形式。
- 系统会为res目录下所有资源生成相应的资源id,raw中的文件也不例外。。
- 目录下不允许存在目录结构。
八、values
值资源文件。
- arrays.xml 数组资源文件
- colors.xml 颜色资源文件
- dimens.xml 尺寸资源文件
- strings.xml 字符资源文件
- styles.xml 样式资源文件
九、xml
存放任意的xml文件,可以通过Resources.getXML()来获取资源。
Android res目录 文件命名规则
参考官方文档Providing Resources | Android中文API
配置限定符名称,有以下几个配置。
- MCC and MNC
- Language and region
- smallestWidth
- Available width
- Available height
- Screen size
- Screen aspect
- Screen orentation
- UI mode
- Night mode
- Screen pixel density(DPI)
- Touchscreen type
- Keyboard availability
- Primary text input method
- Navigation key availability
- Primary non-touch navigation method
- Platform Version(API level)
MCC and MNC
MCC: 移动国家代码
MNC: 移动网络代码
MNC 和 MCC 来自SIM 卡
例如:mcc310、mcc310-mnc004、mcc208-mnc00.
Language and region
语言和地区。语言由1到2个字母的ISO 639-1码组成,后面跟一个1到2个字母的ISO 3166-1-alpha-2 地区代码(前面的小写字母 "r")
例如: en、fr、en-rUS、fr-rFR、fr-rCA、等等。
samallestWidth
屏幕的基本大小,可用屏幕区域的最短尺寸。
例如:sw320dp、sw600dp、sw720dp、等等。
Available width
指定最小可用屏幕宽度,当应用程序提供多个不同值的资源目录时,使用最接近但不超过设备的当前屏幕宽度。与多屏幕开发相关
例如:w720dp、w1024dp、等等。
Available height
指定最小可用屏幕高度,当应用程序提供多个不同值的资源目录时,使用最接近但不超过设备的当前屏幕高度。与多屏幕开发相关。
例如:h720dp、h1024dp、等等。
Screen size
使用大小限定符不意味着这些资源仅用于该大小的屏幕。如果不提供替代资源,系统会使用默认资源做最佳匹配。如果资源的规模大于当前屏幕,系统不会使用他们,可能会导致程序崩溃。
例如:small、normal、large、xlarge。
Screen aspect
屏幕的长度。
例如:long、notlong。
Screen orientation
屏幕的方向。如果用户旋转屏幕,可能会影响程序的生命周期。
例如:land (horizontal)、port (vertical)。
UI mode
用户可以通过UiModeManager来启动或禁用这些模式。
例如:car、desk、television、appliance。
television在api13添加,其他在api4添加
Night mode
用户可以通过UiModeManager来启用或禁用该模式。
例如:night、notnight。在api8添加
Screen pixel density (dpi)
屏幕的像素密度。
nodpi:可用于位图资源,不想被缩放来匹配设备密度。
使用这些限定符不意味着这些资源仅用于该密度的屏幕。如果不提供替代资源,系统会自动匹配最佳资源。
例如:ldpi、mdpi、hdpi、xhdpi、x*hdpi、nodpi、tvdpi、等等。
Touchscreen type
屏幕是否可以触摸。
例如:notouch、finger。
KeyBoard availability
是否支持硬键盘
keysexposed : 设备有键盘可用
keyshidden : 设备的硬键盘可用
keyssoft : 软键盘可用
例如:keysexposed、keyshidden、keyssoft。
Primary text input method
设备的输入方式。
nokeys:设备没有硬件输入
qwerty:设备使用qwerty键盘
12key:设备使用12键的键盘
可以在键盘配置字段配置。
例如:nokeys、qwerty、12key。
Navigation key availability
导航键的可用性
navexposed:导航键可供用户使用。
navhidden:导航键是不可用的(比如封闭的盖子)
navigationHidden 配置显示导航是否可用。
例如:navexposed、navhidden。
Primary non-touch navigation method
原发性非触摸导航方法。
nonav:设备没有导航设施除非利用触摸屏
dpad:设备有一个方向键导航
trackball:设备有一个轨迹球导航
wheel:设备有一个方向盘用于导航
navigation 配置显示导航方式
例如:nonav、dpad、trackball、wheel。
Platform Version (API level)
平台版本。
由设备支持的接口级别。
例如:v3、v4、v7、等等。
使用配置限定符名称的规则
- 可以为一组资源使用多个限定名,由短线分隔。如drawable-hdpi、drawable-en-rUS-land。
- 限定符的使用顺序必须按照上面的顺序。(参照android官方文档Providing Resources 中表2中顺序)
- 替代资源不可以嵌套使用,即文件夹不存在目录结构。
- 值是不区分大小写的,一般只使用小写字符
- 每个限定类型的只有一个值被支持。(可使用别名)
android 工程目录结构
android工程建立完成后会有以下几个目录(基于android6.0创建工程)
- src 文件夹 (source code) 该文件夹存放项目源代码
- gen 文件夹 该文件夹下面的R.java文件是项目自动生成的,开发者不应该对其修改。里面存放的是项目中资源的索引。
- assets 文件夹 系统需要用到的、并且不希望编译的文件,如MP4等
- 一些库文件(Android6.0、Android Private Libraries、Android Dependencies等等。)
- bin 文件夹
- res 文件夹
- AndroidManifest.xml 文件 项目的配置文件。
- default.properties 文件 项目中所需要的环境信息
- proguard-project.txt 文件
- project.properties 文件
- ic_launcher-web.png 文件
- 这里缺少一 libs 文件夹 存放项目的第三方库
正在上传…重新上传取消正在上传…重新上传取消
一、 src 文件夹
src 文件夹下存放项目的源代码,该目录下应该只含有 *.java 文件。
二、 gen 文件夹
gen 文件夹下的文件是系统自动生成的,开发者不应该对该文件夹内的文件进行修改。R.java 文件是工程自动生成的文件,里面存放工程中资源文件的索引。
有时候会遇到工程中R.java 文件丢失的情况。一般会分为两种情况。
- 资源文件包含错误
- 文件丢失
第一种情况将错误修复即可,R.java 文件会自动生成
第二种情况有两种解决方式
- 右键点击项目 --> Android Tools --> Fix Project Properties
- 右键点击项目 --> Properties --> Android --> 选择目标Target,点击Apply 。
三、assets 文件夹
存放项目需要的其他资源,该目录下的资源文件不会在R.java 文件夹中生成ID。可以存放一些小于1M的文件(Android2.3 之前的要求),这些文件将被打包到apk中。
- 目录中文件将不做任何处理被打包
- 目录中的文件不会被映射到R.java 文件中,即系统不会自动为其生成ID
- 目录需要借助AssetManager去访问
- 目录允许下面有多级目录结构
四、库文件
android 工程需要的开发库
五、bin 文件夹
存放自动生成的二进制文件、资源打包文件、dalvik虚拟机的可执行文件。在eclipse下编译完的工程会在该目录下生成apk文件,可以直接安装到手机中。
六、res 文件夹
存放项目的各种资源文件,资源一般包括9种
- animator 属性动画资源
- anim 帧动画资源
- color 颜色资源
- drawable 图片资源
- layout 布局资源
- menu 菜单资源
- raw 其他资源
- values 值资源
- xml 任意的xml资源
七、AandroidManifest.xml 文件
项目的配置文件,里面包括项目的名称、图标、包名、activity、权限、service、recevier等等。
八、default.properties 文件
九、proguard-project.txt 文件和 project.properties 文件
这两个文件是代码混淆时需要用到的参考http://http://www.cnblogs.com/0616--ataozhijia/p/3730746.html
十、libs 文件夹
存放项目的第三方库