android 工程res文件夹目录结构及命名方法

Posted 探求之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 工程res文件夹目录结构及命名方法相关的知识,希望对你有一定的参考价值。

android工程 res目录结构

 

res目录是存放工程内资源文件的,目录结构如下,资源一般包括9种

  1. animator 属性动画资源
  2. anim 帧动画资源
  3. color 颜色资源
  4. drawable 图片资源
  5. layout 布局资源
  6. menu 菜单资源
  7. raw 其他资源
  8. values 值资源
  9. 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创建工程)

  1. src 文件夹 (source code) 该文件夹存放项目源代码
  2. gen 文件夹 该文件夹下面的R.java文件是项目自动生成的,开发者不应该对其修改。里面存放的是项目中资源的索引。
  3. assets 文件夹 系统需要用到的、并且不希望编译的文件,如MP4等
  4. 一些库文件(Android6.0、Android Private Libraries、Android Dependencies等等。)
  5. bin 文件夹
  6. res 文件夹
  7. AndroidManifest.xml 文件 项目的配置文件。
  8. default.properties 文件 项目中所需要的环境信息
  9. proguard-project.txt 文件
  10. project.properties 文件
  11. ic_launcher-web.png 文件
  12. 这里缺少一 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种

  1. animator 属性动画资源
  2. anim 帧动画资源
  3. color 颜色资源
  4. drawable 图片资源
  5. layout 布局资源
  6. menu 菜单资源
  7. raw 其他资源
  8. values 值资源
  9. 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/目录内,因为这样会造成编译错误。

drawablemipmap的区别:

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文件夹目录结构及命名方法的主要内容,如果未能解决你的问题,请参考以下文章

Android-工程目录结构

Android项目结构分析

Android_AnimationDrawable介绍及使用

Android各种文件解析

web工程目录结构

Android 程序目录及UI的简介