Android 基础 — 1、Activity (一) | 青训营笔记

376 阅读4分钟

这是我参与「第四届青训营」笔记创作的第 1 天,同时也是第 1 篇笔记

此篇笔记是 Android 基础中 Activity 的第一部分 —— Android Activity 综述

本篇笔记分为 5 部分

  1. Activity 怎么用
  2. 界面布局 - Layout
  3. 控制界面 - Java
  4. 清单文件 - AndroidManifest
  5. Activity 综述小结

一、Avtivity 活动

Android Activity 综述

Activity ( 活动 ) 是什么?

用户看得见摸的着的是手机屏幕。我们要在手机屏幕上显示文字图像等信息,并对用户的点击滑动等操作作出不同的反应。
在App中与用户交互的大任就是由 Activity 来承担。当用户手指点击手机屏幕时,Android 系统检测到屏幕发生的事情,将这一事件分发对应的 App 处理。
但要注意,Activity 接收到的,是系统给的信息。系统会判断这些交互消息该给哪个 App 来处理。

或者换一个说法

Activity 是一个应用组件,用户可以与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。


1. Activity 怎么用?

当我们打开 Android Studio 创建一个新的工程后,系统将为我们自动创建一个基础的 Activity ,对这些文件进行修改就是在使用 Activity 了。

在新建工程中,需要注意 3 个文件
  • MainActivity.java 在 src/main/java 里,对应的包名目录下
  • activity_main.xml 在 res/layout 里
  • AndroidManifest.xml 在 src/main 里,即“清单文件”

3 个文件分布在不同的地方。简单来说,java 文件可以控制界面逻辑。layout 文件 ( 这里指的是 activity_main.xml ) 预设了 UI 如何摆放。AndroidManifest ( 清单文件 ) 则告诉系统,这个 app 有哪些组件,申请了什么权限。

2. 界面布局 - Layout

在新建的 layout 中,会默认给一个 ConstraintLayout 。但是为了更方便的对元素的属性进行操作,我们将它换成 LinearLayout ,用鼠标选中标签开始的 androidx...Layout ,然后直接键盘输入 LinearLayout 的前几位字母。 AS会自动弹出选择框,在里面双击选择 LinearLayout 或者回车选择,标签就替换完成了。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</LinearLayout>

修改当中元素的属性就可以对 UI 进行操作了

3. 控制界面 - Java

layout 文件设计的是界面的初始布局。它决定了初始界面上放着什么UI组件以及组件是怎么组织安排的。
这里我们说的是「初始界面」或者「初始布局」。也就是说,我们是可以控制界面上的UI元素的。
先看默认的 MainActivity.java 。在 onCreate 方法里, R.layout.activity_main 指的就是 activity_main.xml
layout 中有一个 TextView ,它可以用来显示文字。那我们想在 MainActivity 中控制它,该怎么做呢?
我们来改一下这个TextView。删掉原来ConstraintLayout用到的那些属性。 给它添加一个id。这个id在这个layout文件中必须是独一无二的。给它分配一个id叫做 tv1。

xml

<TextView
    android:id="@+id/tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

现在 TextView 有了「身份证」,我们在 activity 中就可以找到它。用的是 findViewById 方法。
拿到了界面上的这个 TextView 对象。可以对它进行操作了。比如改变它显示的文字。

java

TextView tv1 = findViewById(R.id.tv1);  // 拿到 TextView 的对象
tv1.setText("Hi,there is Justyn");      // 对 TextView 的文本进行修改

4. 清单文件 - AndroidManifest

也可以简称为「manifest文件」。清单文件非常重要,它告诉系统我们的 app 有哪些 activity ,用到了什 么权限等等信息。
如果要新建 activity ,需要在清单中注册。

xml

<application
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:fullBackupContent="@xml/backup_rules"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.MyActivity"
    tools:targetApi="31">
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

从这个默认的清单文件中我们可以得知,activity 是属于application 的。application 就是我们的应用。 application 标签中也指定了各种元素,例如应用的图标,名字,主题等等。
MainActivity 是应用启动的第一个 activity 。可以观察到它设置了 actioncategory 属性。

  • android.intent.action.MAIN 决定应用程序最先启动的 Activity
  • android.intent.category.LAUNCHER 表示可以在手机“桌面”上看到应用图标。
    设置了这2个标签,决定了这个 activity 是用户点击应用图标时「第一个启动的界面」。

5. Activity 综述小结

至此,我们知道了一个 activity 通常需要一个 java 文件,一个 layout 文件,并且要在 清单 中注册。
与网页开发类比的话,layout 文件就像 htmlJavajs 有类似的作用。style(样式)可以起到 css 的作用。
activity 是应用重要的组件之一。纷繁复杂的内容需要 activity 来承载。

写在最后

很高兴能进入这一次的青训营学习。在飞书和微信群里也看到了很多技术很强的大佬们,希望有朝一日也能成为心目中的自己,让我们一起加油,在接下来的日子里努力学习吧!