目录
3.2 Activity 的基本用法
到现在为止,你还没有手动创建过 Activity 呢,因为第 1 章中的 MainActivity 是Android Studio 自动帮我们创建的。手动创建 Activity 可以加深我们的理解,因此现在是时候自己动手了。
我们先将当前的项目关闭,点击导航栏 File→Close Project 。然后再新建一个 Android 项目,新 建项目的步骤你已经在第 1 章学习过了,不过 图1.9 中的那一步需要稍做修改,我们不再选择“Empty Activity” 这个选项,而是选择“Add No Activity” ,如图3.1 所示。
![](https://img-blog.csdnimg.cn/direct/54fbe08839624617a4fb35fdc3a75048.png)
点击“Next” 进入项目配置界面。
项目名可以叫作 Activity Test ,包名我们就使用默认值 com.example.activitytest ,其他选项 都和第 1 章创建的项目保持一致。点击“Finish” ,等待 Gradle 构建完成后,项目就创建成功了。
3.2.1 手动创建 Activity
项目创建成功后,仍然会默认使用Android 模式的项目结构,这里我们手动改成Project 模式, 本书后面的所有项目都要这样修改,以后就不再赘述了。目前Activity Test 项目中虽然还是会自 动生成很多文件,但是app/src/main/java/com.example.activitytest 目录将会是空的,如 图3.2 所示。
![](https://img-blog.csdnimg.cn/direct/0f699281a16f4100882fe7c3263d09da.png)
现在右击 com.example.activitytest 包→New→Activity→Empty Activity ,会弹出一个创建 Activity 的对话框,我们将Activity 命名为FirstActivity ,并且不要勾选Generate Layout File 和Launcher Activity 这两个选项,如 图3.3 所示。
![](https://img-blog.csdnimg.cn/direct/d929e632a0844c2590251da54ca0d865.png)
勾选 Generate Layout File 表示会自动为 FirstActivity 创建一个对应的布局文件,勾选 Launcher Activity 表示会自动将 FirstActivity 设置为当前项目的主 Activity 。由于你是第一次手动创建 Activity ,这些自动生成的东西暂时都不要勾选,下面我们将会一个个手动来完成。勾选Backwards Compatibility 表示会为项目启用向下兼容旧版系统的模式,这个选项要勾上。 点击“Finish” 完成创建。
你需要知道,项目中的任何 Activity 都应该重写 onCreate() 方法,而目前我们的 FirstActivity 中已经重写了这个方法,这是 Android Studio 自动帮我们完成的,代码如下所示:
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
可以看到,onCreate() 方法非常简单,就是调用了父类的 onCreate() 方法。当然这只是默 认的实现,后面我们还需要在里面加入很多自己的逻辑。
3.2.2 创建和加载布局
前面我们说过,Android 程序的设计讲究逻辑和视图分离,最好每一个 Activity 都能对应一个布局。布局是用来显示界面内容的,我们现在就来手动创建一个布局文件。
右击 app/src/main/res 目录 →New→Directory ,会弹出一个新建目录的窗口,这里先创建一个名为 layout 的目录。然后对着 layout 目录右键 →New→Layout resource file ,又会弹出一个新建布局资源文件的窗口,我们将这个布局文件命名为 first_layout ,根元素默认选择为 LinearLayout ,如 图3.4 所示。
![](https://img-blog.csdnimg.cn/direct/83156432659549b183f35e6917dcf38a.png)
点击“OK”完成布局的创建,这时候你会看到如 图3.5 所示的布局编辑器。
![](https://img-blog.csdnimg.cn/direct/9fca5329b9884db9beb0185af22e2ce0.png)
这是 Android Studio 为我们提供的可视化布局编辑器,你可以在屏幕的中央区域预览当前的布局。在窗口的左下方有两个切换卡:左边是 Design ,右边是 Text。Design 是当前的可视化布局编辑器,在这里你不仅可以预览当前的布局,还可以通过拖放的方式编辑布局。而 Text 则是通 过 XML 文件的方式来编辑布局的,现在点击一下 Text 切换卡,可以看到如下代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
由于我们刚才在创建布局文件时选择了 LinearLayout 作为根元素,因此现在布局文件中已经有 一个 LinearLayout 元素了。我们现在对这个布局稍做编辑,添加一个按钮,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1"
/>
</LinearLayout>
这里添加了一个 Button 元素,并在Button 元素的内部增加了几个属性。android:id 是给当前 的元素定义一个唯一的标识符,之后可以在代码中对这个元素进行操作。你可能会对 @+id/button1 这种语法感到陌生,但如果把加号去掉,变成 @id/button1,你就会觉得有些熟悉了吧。这不就是在 XML 中引用资源的语法吗?只不过是把 string 替换成了 id。是的,如果你需要在 XML中引用一个 id,就使用 @id/id_name 这种语法,而如果你需要在 XML中定义一 个 id</