android 工程res文件夹目录结构及命名方法
Posted 探求之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 工程res文件夹目录结构及命名方法相关的知识,希望对你有一定的参考价值。
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 文件夹
存放项目的第三方库
Android-工程目录结构
Android 平台的主要组件。
使用Android Studio工具开发Android应用程序,创建的工程目录结构比较复杂,开发人员应该清楚各个目录下面放置的是什么东西。工程根目录下有app和Gradle Scripts,app是应重点关注的,app下面的主要目录有manifests、java和res。
manifests目录中的AndroidManifest.xml是当前Android应用程序的清单文件,记录应用中所使用的各种组件,java是Java源代码目录,res是资源目录。
R.java
访问res目录中的资源文件,并不能通过Java IO技术实现,而是通过R.java文件访问。R.java文件是在工程编译时候自动产生的R类。
R类中包含很多静态类,且静态类的名字都与res中的一个目录名字对应,就像是资源字典大全,包含了用户界面、图像、字符串等对应于各个资源的标识符,R类定义了该项目所有资源的索引。例如,在程序代码中访问activity_main.xml布局文件,可以通过表达式R.layout.activity_main访问。
R类还可以访问界面中的视图,如果视图在布局文件中定义id属性,类似代码"android:id="@+id/btn_1",那么在程序代码中就可以通过R.id.btn_1表达式访问该视图。
R.java文件路径:Android列表视图下是看不到的,要想找到R文件,就要把项目列表视图切换成Project模式。然后依次点击-->app-->build-->generated-->source-->r-->debug,在debug下的两个选项的子文件中分别有一个R文件,这就是你想要找的R文件(Android Studio高版本就找不到定能找到)。
资源目录(res)
资源是指代码使用的附加文件和静态内容,例如位图、布局定义、界面字符串、动画说明等。
将各类资源放入项目res/目录的特定子目录中。例如,以下是一个简单项目的文件层次结构:
drawable:位图文件(png(推荐)、9.png(推荐)、jpg(可用)、gif(不推荐使用))或XML文件,这些文件编译成以下绘制资源。
layout:定义用户界面布局的XML文件(定义了Activity或UI组件中的UI的体系结构。)
mipmap:不同启动器图标密度的可绘制文件(png(推荐)、jpg(可用)、gif(不推荐使用))。
values:参数值目录,存放软件所需要显示的各种文字和一些数据。可以在这个目录下的strings.xml中存放各种文字,还可以存放不同类型的数据,例如colors.xml、dimens.xml和styles.xml等。
注意:切勿将资源文件直接保存在res/目录内,因为这样会造成编译错误。
drawable和mipmap的区别:
drawable:图标有固定的尺寸。
drawable:9-Patch图片和Shape资源文件只能放在drawable目录中
mipmap:需要适应屏幕分辨率的图片推荐放在mipmap目录中,可以提高显示性能、占用内存少。
mipmap:系统会对其缩放进行一些性能的优化.图片会更加美观.
注意:切勿将资源文件直接保存在 res/ 目录内,因为这样会造成编译错误。
清单文件AndroidMainfest.xml
每个应用项目必须在项目源设置的根目录中加入AndroidManifest.xml文件(且必须使用此名称)。清单文件会向Android构建工具、Android操作系统和Google Play描述应用的基本信息。
声明应用组件如:
声明应用必须具备的权限,例如应用中使用到的服务权限(如GPS服务、互联网服务和短信服务等等)。
声明应用所需的最低Android API级别。
1、声明应用的Java源代码包名,包名(如com.scc.demo)非常重要,它是应用的唯一标识符。
2、描述应用中的组件,即Activity (活动) 、Service(服务)、Broadcast Receiver (广播接收器)和Content Provider (内容提供者)。
3、声明应用必须具备的权限,例如应用中使用到的服务权限(如GPS服务、互联网服务和短信服务等等)。
4、声明安全控制和测试等信息
注意:在Android Studio工程中,AndroidManifest.xml位于manifests根目录下;而在操作系统(如Windows的资源管理器)中,AndroidManifest.xml位于应用的根目录下。
AndroidManifest.xml文件代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.scc.demo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Demo"> <activity android:name=".actvitiy.RadioButtonActivity" android:configChanges="orientation|screenSize" android:launchMode="standard"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.scc.demo.actvitiy.RedActivity" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="scc" android:path="/redActivity" android:port="2021" android:scheme="sccdemo" /> </intent-filter> </activity> <service android:name=".service.StartService"/> <service android:name=".service.BindService"/> <activity android:name="com.scc.demo.actvitiy.BlueActivity" android:launchMode="standard" /> </application> </manifest>
以上是关于android 工程res文件夹目录结构及命名方法的主要内容,如果未能解决你的问题,请参考以下文章