2.3.2 创建工程
5 创建工程
完成开发环境的创建后,打开Android Studio可以看到欢迎界面,在此就可以创建Android应用了,如图2-3所示。
图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”(下一步)按钮。
图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版本比它低,应用就无法运行。
图2-5 选择应用设备类型和最低SDK版本
Android版本和API层次对应关系如表2-1所示。
表2-1 Android版本和API层次对应关系
开发Android应用要仔细考虑应用与哪些版本兼容。如果指定应用与最新版本兼容,如8.1 Oreo API 27,通过图2-6可以看到这个版本仅能在1.1%的设备上运行。为了应用能够在绝大多数Android设备上运行,这里选择4.2 Jelly Bean API 17。
图2-6 设备版本数量分布
3.创建活动和布局
所有的应用都是由一个个不同的屏幕构成的集合。每一个屏幕都由一个活动和一个布局所构成。
活动(Activity)通常关联一个屏幕,通过与用户来交互完成某项任务,如一个活动要写E-mail、照相或者验证用户名和密码。活动中所有操作都与用户密切相关,是一个负责与用户交互的组件,用Java编写。
布局(Layout)描述了屏幕的外观。布局通常写在一个XML文件中,它告诉Android屏幕上的按钮、文本框、图像等不同GUI组件如何组织。
总之,布局定义了如何表示用户界面,活动定义了如何动作。
下面详细分析活动和布局如何共同创建一个用户界面,如图2-7所示。
①设备启动应用,创建一个活动对象。
②这个活动对象指定一个布局。
③活动告诉Android在屏幕上显示这个布局。
④在设备上显示包含这个布局的用户界面。
⑤活动通过运行应用代码对交互做出响应。
⑥活动更新页面。
⑦用户将在设备上看到更新后的页面。
图2-7 用户界面创建过程
Android Studio提供了13个模板用来创建活动和布局。选择“Empty Activity”(空活动),再单击“Next”(下一步)按钮,如图2-8所示。
图2-8 选择活动模板
4.配置活动
输入活动的名称为“MainActivity”,勾选“Generate Layout File”(生成布局文件)复选框。活动是一个Java类,因此将自动创建一个MainActivity.java类文件。
输入布局名称“activity_main”,取消勾选“Backwords Compatibility(AppCompat)”复选框,该选项用于添加AppCompat包提供向后兼容性,如图2-9所示。布局是XML文件,因此将自动创建一个activity_main.xml的XML文件。
图2-9 选择活动模板
接下来,Android Stuido会自动构建应用,构建应用对于初学者来说是一个复杂的概念,这里暂不详述。
单击“Finish”(完成)按钮之后,进入Android Studio工程界面,如图2-10所示。
图2-10 Android Studio工程界面
5.工程目录
6 工程目录和Gradle
Android应用实际上就是使用文件夹结构组织的一系列文件的集合。Android Studio会自动创建这些文件和结构,单击左侧的“Project”(项目)选项,可以浏览整个项目包含的文件夹和各类文件,如图2-11所示。
图2-11 工程目录
6.Gradle
Android Studio工程使用Gradle构建系统来编译和部署应用。Gradle工程有一个标准布局。Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,用于管理应用的依赖、打包、部署、发布以及差异管理等。
Project下面的build.gradle文件是整个项目的Gradle基础配置文件,用来配置项目的构建任务。代码如下所示。
app下面的build.gradle文件主要配置应用属性、应用签名、应用特性(渠道)、应用构建类型和应用依赖。代码如下所示。
7.工程目录中的关键文件和文件夹
下面是一些工程目录中的关键文件和文件夹,如图2-12所示。
图2-12 关键文件和文件夹
8.创建布局
7 创建布局和活动
双击activity_main.xml文件,可以开始编辑布局。布局编辑有两种方式,一种是通过代码编辑器进行编辑,另一种是通过设计编辑器进行编辑。代码编辑器就是一个文本编辑器,在编辑器中部分关键字会用不同的颜色进行显示,如图2-13所示。
图2-13 代码编辑器
单击编辑器左下角的“Design”按钮,进入设计编辑器,如图2-14所示。利用设计编辑器可以把GUI组件拖到布局中,根据设计的布局进行摆放。在右侧属性窗口中输入属性值,可以直接看到界面的效果,完成布局的设计。代码编辑器和设计编辑器是对同一个文件进行的不同视图下的编辑,两者之间可以来回切换。
图2-14 设计编辑器
下面看看这个简单布局文件的内容。
第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所示。
图2-15 编辑活动
活动MainActivity就是一个Java类。
第1行声明了包名为cn.edu.jsit.smartfactory。
第2、3行引入了MainActivity中使用的Android类。
第4行声明了MainActivity类继承了Activity类。
第5~9行重写了Activity类的onCreate()方法。这个方法将在第一次创建活动的时候被调用。
第7行调用了父类的onCreate()方法。
第8行指定要使用哪个布局文件。