2.3.2 创建工程
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/20_02.jpg?sign=1739359432-MEyn6jWJybcCrugfQ8dHSlORQhRw41NU-0-2765a9ce83ec3c32dbb23d314d719e8c)
5 创建工程
完成开发环境的创建后,打开Android Studio可以看到欢迎界面,在此就可以创建Android应用了,如图2-3所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/20_03.jpg?sign=1739359432-8IxvSM3SS3RSBKgUd3gdcRVwufIg28be-0-0c14b0458e7925e3c5c49c26a25eaeee)
图2-3 Android Studio欢迎界面
1.配置工程
在配置工程界面,需要指定工程项目的名称、使用哪个公司域名、项目的存储目录,以及包名。
Android Studio使用公司域名和应用名来构成应用使用的包名。例如,应用名(Application name)为“SmartFactory”,公司域名(Company dornain)为“jsit.edu.cn”,Android Studio就会自动生成包名(Package name)cn.edu.jsit.smartfactory。在Android中包名非常重要,Android设备将用这个包名来唯一表示应用,管理同一个应用的多个版本,在整个生命周期中包名要保持不变。
如图2-4所示,输入相应信息,单击“Next”(下一步)按钮。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/21_01.jpg?sign=1739359432-6WwmmISNpzm5EuHwBiT6pr9Lqg6weWhb-0-fd15fa512172ccc2617abccc43263968)
图2-4 创建Android工程项目
2.选择应用设备类型和最低支持版本
Android应用设备类型包括5类,默认选择“Phone and Tablet”。默认最低SDK版本为“API 17:Android 4.2(Jelly Bean)”,表示API层次为17,Android版本为4.2(果冻豆),如图2-5所示。
其中,Phone and Tablet表示应用是一个手机和平板项目。Wear OS表示应用是一个可穿戴设备(如手表)项目。TV表示应用是一个Android TV项目。Android Auto表示应用是一个汽车项目(其需要连接手机使用)。Android Things表示应用是一个嵌入式设备(如树莓派3B)项目。
最低SDK版本是应用支持的最低版本,应用将在这个版本或者更高版本API的设备上运行,如果设备的API版本比它低,应用就无法运行。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/22_01.jpg?sign=1739359432-U5Uan8s44IVQ8OKHr6RFXI1YGfEjjPKt-0-dac5cdbc15a129753315cfa6d55258bf)
图2-5 选择应用设备类型和最低SDK版本
Android版本和API层次对应关系如表2-1所示。
表2-1 Android版本和API层次对应关系
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/22_02.jpg?sign=1739359432-jmF0t4UsNicw7r4nlcFAHXd409Jtqzs7-0-aae9b641a6ba3da24d4b467d7b6cbe27)
开发Android应用要仔细考虑应用与哪些版本兼容。如果指定应用与最新版本兼容,如8.1 Oreo API 27,通过图2-6可以看到这个版本仅能在1.1%的设备上运行。为了应用能够在绝大多数Android设备上运行,这里选择4.2 Jelly Bean API 17。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/23_01.jpg?sign=1739359432-HxfWPbxqzT1COwjhO1m4llXcSHIWdZ7n-0-0543e88b8473db967e97c48f5f9bd83b)
图2-6 设备版本数量分布
3.创建活动和布局
所有的应用都是由一个个不同的屏幕构成的集合。每一个屏幕都由一个活动和一个布局所构成。
活动(Activity)通常关联一个屏幕,通过与用户来交互完成某项任务,如一个活动要写E-mail、照相或者验证用户名和密码。活动中所有操作都与用户密切相关,是一个负责与用户交互的组件,用Java编写。
布局(Layout)描述了屏幕的外观。布局通常写在一个XML文件中,它告诉Android屏幕上的按钮、文本框、图像等不同GUI组件如何组织。
总之,布局定义了如何表示用户界面,活动定义了如何动作。
下面详细分析活动和布局如何共同创建一个用户界面,如图2-7所示。
①设备启动应用,创建一个活动对象。
②这个活动对象指定一个布局。
③活动告诉Android在屏幕上显示这个布局。
④在设备上显示包含这个布局的用户界面。
⑤活动通过运行应用代码对交互做出响应。
⑥活动更新页面。
⑦用户将在设备上看到更新后的页面。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/24_01.jpg?sign=1739359432-Ha7M1pRjdZxI1FjgM4gWnekMq0W2wCDf-0-d27043fa035609d59b96b8830e155b9c)
图2-7 用户界面创建过程
Android Studio提供了13个模板用来创建活动和布局。选择“Empty Activity”(空活动),再单击“Next”(下一步)按钮,如图2-8所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/24_02.jpg?sign=1739359432-oF0liPnRNMHosWupTqLKofWrUxQ9onbb-0-40e363bc86be5aa807c800c3f6f8e24e)
图2-8 选择活动模板
4.配置活动
输入活动的名称为“MainActivity”,勾选“Generate Layout File”(生成布局文件)复选框。活动是一个Java类,因此将自动创建一个MainActivity.java类文件。
输入布局名称“activity_main”,取消勾选“Backwords Compatibility(AppCompat)”复选框,该选项用于添加AppCompat包提供向后兼容性,如图2-9所示。布局是XML文件,因此将自动创建一个activity_main.xml的XML文件。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/25_01.jpg?sign=1739359432-MkUwbJp3qHybIRXPAml62PzLHFtEW4CJ-0-7923e469e511bf205f6c3271f19181d5)
图2-9 选择活动模板
接下来,Android Stuido会自动构建应用,构建应用对于初学者来说是一个复杂的概念,这里暂不详述。
单击“Finish”(完成)按钮之后,进入Android Studio工程界面,如图2-10所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/25_02.jpg?sign=1739359432-4fHdPOgf061gP5JWTFthOQohxDHOSCVS-0-9579e21e165cd6cdb72ea7234b782768)
图2-10 Android Studio工程界面
5.工程目录
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/26_01.jpg?sign=1739359432-W3kZzo77XAxRE2T1krpJXUTW1g90a50V-0-1f07b8154251fd0f2c49ab3a9976f48a)
6 工程目录和Gradle
Android应用实际上就是使用文件夹结构组织的一系列文件的集合。Android Studio会自动创建这些文件和结构,单击左侧的“Project”(项目)选项,可以浏览整个项目包含的文件夹和各类文件,如图2-11所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/26_02.jpg?sign=1739359432-8oTyEy0tHKDX44TAWMXimNDp2tdlavEZ-0-8683fb09a2460994b14748eb2e9b021e)
图2-11 工程目录
6.Gradle
Android Studio工程使用Gradle构建系统来编译和部署应用。Gradle工程有一个标准布局。Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,用于管理应用的依赖、打包、部署、发布以及差异管理等。
Project下面的build.gradle文件是整个项目的Gradle基础配置文件,用来配置项目的构建任务。代码如下所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/26_03.jpg?sign=1739359432-wZ825nbcgeRI55j7htCwyxlHndr8aCxm-0-4c28e497a0c106af405277d4d273dd50)
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/27_01.jpg?sign=1739359432-6oUfcdLlC6cuX93pGVxrBWUiEvpLTKAt-0-c53453bd1f5af810bdb0f6da13ac0789)
app下面的build.gradle文件主要配置应用属性、应用签名、应用特性(渠道)、应用构建类型和应用依赖。代码如下所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/27_02.jpg?sign=1739359432-YSzSxPzk9lkLYYNkw4nsChfCcNNAwlju-0-d8023368a22a920e0d26fb6442beb705)
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/28_01.jpg?sign=1739359432-JWXKCYGqeWTOmQX3mP4e8xzbKJQYr02z-0-463eafd76602931475b2c48286a850fa)
7.工程目录中的关键文件和文件夹
下面是一些工程目录中的关键文件和文件夹,如图2-12所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/28_02.jpg?sign=1739359432-kxyzVP1ybOII9PIoIWPLRDxd2gZx9g7v-0-84b1743e89abe0378b763bf0f8ff15ec)
图2-12 关键文件和文件夹
8.创建布局
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/28_03.jpg?sign=1739359432-5AKHRPqUK3mV4jJDidT9VD5mlDog5NTv-0-dfff8617f86786318cadb560becc02fa)
7 创建布局和活动
双击activity_main.xml文件,可以开始编辑布局。布局编辑有两种方式,一种是通过代码编辑器进行编辑,另一种是通过设计编辑器进行编辑。代码编辑器就是一个文本编辑器,在编辑器中部分关键字会用不同的颜色进行显示,如图2-13所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/29_01.jpg?sign=1739359432-VN7lIvr1PyFw5s8BYCwRzUpuwheyFvXc-0-9c9b3067e05b619949b86caf6c94d7b2)
图2-13 代码编辑器
单击编辑器左下角的“Design”按钮,进入设计编辑器,如图2-14所示。利用设计编辑器可以把GUI组件拖到布局中,根据设计的布局进行摆放。在右侧属性窗口中输入属性值,可以直接看到界面的效果,完成布局的设计。代码编辑器和设计编辑器是对同一个文件进行的不同视图下的编辑,两者之间可以来回切换。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/29_02.jpg?sign=1739359432-XW0MK3ycvYr5B934yJRz9CyCDejU3EYz-0-59c5a0dffb54619841cf594997f56b5e)
图2-14 设计编辑器
下面看看这个简单布局文件的内容。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/30_01.jpg?sign=1739359432-Oa0Bp2HRw8oj7JhnOujBqPjSPSIUp6Lo-0-4ca57b5534c1b32b875c3d1cc00a611d)
第1行代码告诉解析器和浏览器,这个文件应该按照1.0版本的XML规则进行解析。ecoding="utf-8"表示此XML文件采用UTF-8的编码格式。
第2行声明布局采用的布局方式为ConstraintLayout(约束布局)。ContraintLayout主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件,从Android Studio 2.3起,官方的模板默认使用ConstraintLayout。Android的其他布局方式还有RelativeLayout(相对布局)、LinearLayout(线性布局)、FrameLayout(帧布局)等,在后续章节中会进行介绍。
第3~5行是Android命名空间定义。和Java中的package、C#中的namespace一样,这里的XML中的命名空间(xml namespace,xmlns)也是为了解决XML中元素和属性命名冲突的问题。因为XML中的标签并不是预定义的,这一点与HTML是有区别的,HTML中的标签是预定义的,所以在XML中会遇到命名冲突的问题。
在Android中,目前遇到的xmlns一共有以下三种。
android:用于Android系统定义的一些属性。
app:用于应用自定义的一些属性。
tools:用于XML中的错误处理、预览和资源压缩等。
第6、7行让布局和设备的屏幕大小有相同的宽度和高度。
第8行表明activity_main.xml文件在MainActivity.java的MainActivity类里面有引用。
第9~16行定义了一个TextView GUI组件来显示文本。
9.创建活动
双击MainActivity文件,可以编辑活动,它由Android Studio自动生成,如图2-15所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/31_01.jpg?sign=1739359432-X0foYHzozXB27OXohdKb5jxoaeJE2Ptj-0-512ccacb4ce7ffa7b3e7584e09fb1f3c)
图2-15 编辑活动
活动MainActivity就是一个Java类。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/31_02.jpg?sign=1739359432-HM0jllsw1pyAtcHytJjmBFDRh8pQaNNF-0-e98fc1380bc4397250fbba953382cf07)
第1行声明了包名为cn.edu.jsit.smartfactory。
第2、3行引入了MainActivity中使用的Android类。
第4行声明了MainActivity类继承了Activity类。
第5~9行重写了Activity类的onCreate()方法。这个方法将在第一次创建活动的时候被调用。
第7行调用了父类的onCreate()方法。
第8行指定要使用哪个布局文件。