1、活动是什么?
活动(
Activity)主要用于和用户进行交互,它是一种可以包含用户界面的组件。一个应用程序可以包含零个或多个活动,每一个活动组件负责一个用户界面的展现。同时活动也是
Android应用程序的四大组件之一。
任何活动都要在
AndroidManifest,xml文件中注册才能生效,不过并不需要担心,不管是我们手动还是默认创建活动,
Android Studio都会自动帮我们完成对活动的注册。
2、Activity的创建步骤
(1)、定义一个类继承自
android.app.Activity或者其自类。
(2)、在
res/layout目录中创建一个
xml文件,用于创建
Activity的布局。
(3)、在
AndroidManifest.xml文件中注册
Activity。
(4)、重写
Activity的
onCreate()方法,并在该方法中使用
setContentView()加载指定的布局文件。
注:
Android程序的设计讲究逻辑和视图的分离,最好每一个活动都能对应一个布局,布局就是用来显示界面的。
3、准备手动创建活动
打开
Android Studio,新建一个
Android项目,项目名可以叫
ActivityDemo,报名使用默认值,需要注意的是,在添加活动界面
(Add an Actibity to Mobile),不再选择
Empty Actibity这个选项,而是选择
Add No Activity, 准备手动创建活动。
4、手动创建活动
(1)、将创建成功的项目从
Android模式的项目结构改为
Project模式。
(2)、此时,打开
app/src/main/java/activitytest.example.com.activitydemo目录,我们可以看到
activitytest.example.com.activitydemo包是空的。
(3)、右击
activitytest.example.com.activitydemo包
-->New-->Activity-->Empty Activity ,弹出创建活动的窗口,这里我们将活动命名为
FirstActivity,注意不要勾选
Generate Layout和
Launcher Activity选项。但要勾选
Backwards Compatibility选项。
Generate Layout表示自动为我们创建的
FirstActivity活动创建对应的布局文件,
Launcher Activity表示自动将
FirstActivity设置为当前项目的主活动,由于我们是手动创建活动,所以暂时不勾选这两个选项。勾选
Backwards Compatibility表示会为项目启动向下兼容的模式,这个要选上。
(4)、点击Finish完成创建,可以看到
Android Studio已经自动为我们在
FirstActivity中重写了
Activity的
onCreate()方法。
onCreate()方法非常简单,就是调用了父类的
onCreate()方法,当然我们还可以在里面加入自己的逻辑,这里先不提及。
5、创建和加载布局
(1)、第二部分我们讲过,
Android程序的设计讲究逻辑和视图分离,所以现在我们就来创建一个布局文件。
(2)、右击
app/src/main/res目录
-->New-->Directory,弹出一个新建目录的窗口,我们给这个目录命名为
layout,然后对着
layout目录右击
-->New-->Layout resource file,又会弹出一个新建布局资源文件的窗口,我们将这个布局文件命名为
first_layout,根元素就默认为
LinearLayout。点击OK完成布局的创建。
(3)、如上图所示,就是我们创建完成的布局编辑器。你可以在中央区域预览当前的布局,在窗口的左下方有两个切换卡,左边是
Design,右边是
Text,
Design是当前的可视化布局编辑器,在这里你不仅可以预览当前的布局,还可以通过左边工具栏拖放的方式编辑布局。而
Text则是通过
XML文件的方式来编辑布局。现在点击
Text切换,可以看到如下代码:
(4)、因为我们刚才创建布局的时候选择了
LinearLayout作为根元素,因此布局文件中已经有一个
LinearLayout元素了。
(5)、一个布局文件我们已经创建完成了,接下来需要做的,就是在活动中加载这个布局。也就是调用
setContentView()方法来给当前的活动加载一个布局,而在
setContentView()方法中,我们一般都会传入一个布局文件的
id。
我们知道,项目中添加的任何资源都会在R文件中生成一个相应的资源
id,因此我们刚才创建的
first_layout.xml布局的id现在已经添加到R文件中了所以只需要调用
R.layout.first_layout就可以得到
first_layout.xml布局的id,然后将这个值传入
setContentView()方法即可。
回到
FirstActivity,在
onCreste()方法中加入如下代码:
6、在AndroidManifest文件中注册
(1)、前面提到过所有的活动都要在
AndroidManifest.xml中注册才能生效,打开
app/src/main/AndroidManifest.xml文件,我们可以看到
Android Studio已经自动为我们将
FirstActivity注册过了,注册声明放在
<application>标签内。
注:在最外层的
<manifest>标签中已经通过
package属性指定了程序的包名,因此在注册活动时这一部分就可以省略了,直接使用
.FirstActivity就足够了。
(2)、为程序配置主活动,配置主活动的方法就是在
<activity>标签的内部加入
<intent-filter>标签,并在标签里添加
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>两句声明即可,如下图:
7、运行效果
注:如果一个应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他应用在内部进行调用的。