![Android从入门到精通(微视频精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/217/44510217/b_44510217.jpg)
3.2 Android项目结构
在Android Studio中,提供了如图3.15所示的多种项目结构类型。其中,最常用的是Android和Project。由于Android项目结构类型是创建项目后默认采用的,所以这里就使用这种结构类型。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P41_3727.jpg?sign=1739486984-gpL6Kb5LwcTOoqFPQf0xspQiTmDjz11D-0-6db600070ddfa44da4f22b7f02c9122f)
图3.15 Android Studio提供的项目结构类型
采用Android项目结构时,各个子节点的作用如图3.16所示。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P41_45546.jpg?sign=1739486984-mfsDduayloZ9eMxvEboKnM9VXYZGiq2l-0-2914cf1fe19fb74f52cfd98e74ee5861)
图3.16 Android项目结构类型说明
下面再对一些常用的节点进行详细介绍。
3.2.1 manifests节点
manifests节点用于显示Android应用程序的配置文件。通常情况下,每个Android应用程序必须包含一个AndroidManifest.xml文件,位于manifests节点下。它是整个Android应用的全局描述文件。在该文件内,需要标明应用的名称、使用图标、Activity和Service等信息,否则程序不能正常启动。例如,“第一个Android应用”中的AndroidManifest.xml文件代码如下。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P42_45618.jpg?sign=1739486984-Rkqy8rNjAV8l39r5bUmLuky2j5xXWXz0-0-1f11635229484320dec620dd7883c54b)
AndroidManifest.xml文件中的重要元素及说明如表3.1所示。
表3.1 AndroidManifest.xml文件中的重要元素及说明
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-T42_45620.jpg?sign=1739486984-MLLdfqqgwlGQNnUi6QfuvSYc1wGm8XOR-0-fc41d28caa86c52764f28c7d86d3ffd0)
注意
在Android程序中,每一个Activity都需要在AndroidManifest.xml文件中有一个对应的<activity>标记。
3.2.2 java节点
java节点用于显示包含了Android程序的所有包及源文件(.java),例如,3.1节的“第一个Android应用”项目的java节点展开效果如图3.17所示。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P43_45547.jpg?sign=1739486984-V7VBNgfJR2JwO5uoyt5DXfZSuK5LLWoJ-0-3d3dc3e1fbe20db9c5b70b168c2f2d9f)
图3.17 java节点
默认生成的MainActivity.java文件的关键代码如下。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P43_45621.jpg?sign=1739486984-P54gSkh1OnCwfPNI0rZtJ5ccXX6pgptp-0-1248046027256bdbb587e2c0aa5a5713)
从上面的代码可以看出,Android Studio创建的MainActivity类默认继承自AppCompatActivity类(继承自AppCompatActivity类的Activity将带有Action Bar),并且在该类中,重写了Activity类中的onCreate()方法,在onCreate()方法中通过setContentView(R.layout.activity_main)方法设置当前的Activity要显示的布局文件。
说明
这里使用R.layout.activity_main来获取layout目录中的activity_main.xml布局文件,这是因为在Android程序中,每个资源都会在R.java文件中生成一个索引,而通过这个索引,开发人员可以很方便地调用Android程序中的资源文件。
注意
应用Android Studio创建的项目,R.java文件位于新创建应用的<应用名称>build\generated\source\r\debug\<包路径>目录下。R.java文件是只读文件,开发人员不能对其进行修改,当res包中的资源发生变化时,该文件会自动修改。
3.2.3 res节点
该节点用来显示保存在res目录下的资源文件,当res目录中的文件发生变化时,R文件会自动修改。在res目录中还包括一些子目录,下面将对这些子目录进行详细说明。
1.drawable子目录
drawable子目录通常用来保存图片资源(如PNG\JPEG\GIF图片、9-Patch图片或者Shape资源文件等)。
2.layout子目录
layout子目录主要用来存储Android程序中的布局文件,在创建Android程序时,会默认生成一个activity_main.xml布局文件。例如,“第一个Android应用”项目的layout子目录的结构如图3.18所示。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P44_4154.jpg?sign=1739486984-ucLNYYNI4lNfhlZEYaLwUsTsshzXiY5m-0-15a3f79c6395e5db0460c28b3419ae66)
图3.18 layout子目录的结构
在Android Stuido中打开activity_main.xml布局文件的代码如图3.19所示。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P44_4158.jpg?sign=1739486984-076S0FkelICkcL6ncj80RqKl1z3kRthB-0-b0beaf00f46f219722652be733f6d722)
图3.19 在Android Stuido中打开activity_main.xml文件的代码
activity_main.xml布局文件中的重要元素及说明如表3.2所示。
表3.2 activity_main.xml布局文件中的重要元素及说明
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-T45_45623.jpg?sign=1739486984-wpLFlURsR9n5ZXswQKih3pUO7jB4F65g-0-b663dc712e9cf57665740d87cb924ee2)
技巧
开发人员在指定各个元素的属性值时,可以按Ctrl+Alt+Space组合键来显示帮助列表,然后在帮助列表中选择系统提供的值,如图3.20所示。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P45_4184.jpg?sign=1739486984-A7UpQe5j6ohqBDeofirZyUyjAyN0gFG8-0-f6211714befcd19e128503b0c6bea6ab)
图3.20 按Ctrl+Alt+Space组合键显示帮助列表
另外,Android Studio提供了可视化的布局编辑器来辅助用户开发布局文件,如图3.21所示。在该编辑器内,可以通过拖曳组件实现界面布局。
3.mipmap子目录
mipmap子目录用于保存项目中应用的启动图标。为了保证良好的用户体验,需要为不同的分辨率提供不同的图片,并且分别存放在不同的目录中。通常情况下,Android Studio会自动创建mipmap-xxxhdpi(超超超高)、mipmap-xxhdpi(超超高)、mipmap-xhdpi(超高)、mipmap-hdpi(高)和mipmap-mdpi(中)等5个目录,分别用于存放超超超高分辨率图片、超超高分辨率图片、超高分辨率图片、高分辨率图片和中分辨率图片,并且会自动创建对应5种分辨率的启动图标文件(ic_launcher.png)以及mipmap-anydpi-v26目录中的两个自适应图标文件,如图3.22所示。
说明
由于从Android 7.1.1开始系统中应用的图标为圆形图标,所以为了让其他版本的系统正常使用高版本开发的应用,mipmap子目录中将自动生成圆形与方形两种图标。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P46_45549.jpg?sign=1739486984-LRQWDd7V9SWp1cJowfMkT6cW9wOHoHUR-0-bab3a7ad7e676db4f4beb63ce05d5d5a)
图3.21 布局编辑器
4.values子目录
values子目录通常用于保存应用中使用的字符串、样式和颜色资源。例如,“第一个Android应用”的values子目录的结构如图3.23所示。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P46_45550.jpg?sign=1739486984-LRr7PNNBx4r49gU9OiNXZINwTgMRCZOk-0-0a25ef34ef0765b06d5e40a8d0c6d06b)
图3.22 mipmap子目录
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P46_45551.jpg?sign=1739486984-Jv6uIrSs5SrtiPlqkh0mHnQaaXwyQcJV-0-15415b5d991856093030d11ce9a82114)
图3.23 values子目录的结构
在开发国际化程序时,这种方式尤为方便,strings.xml文件的代码如下。
![](https://epubservercos.yuewen.com/202D84/23721671201056006/epubprivate/OEBPS/Images/Figure-P46_45624.jpg?sign=1739486984-E9XJUVBO9p6I1qbQt9U6Ki7LHsjAJkeh-0-14a07d8182393ea86a375c5b129b31f7)
说明
关于如何实现国际化程序,将在本书的12.7节进行详细介绍。