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、运行效果
注:如果一个应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他应用在内部进行调用的。