android基础 [超级详细android Activity组件解析(Activity综述,Activity生命周期,Activity启动--携带参数启动)]

1 章节目录

2 Android Activity综述

2.1 Activity怎么用

2.2 layout - 界面布局

2.3 Java - 控制界面

2.4 AndroidManifest.xml - 清单文件

2.5 activity总览小结

3 Activity 生命周期

3.1 生命周期变化

3.2 onCreate和onStart的区别

3.3 onPause和onStop的区别

4 Activity 启动,携带参数启动

4.1 Intent

4.2 带参数的跳转

5 Activity 传递Parcelable对象

5.1 Parcelable对象简介

5.2 使用例子

6 Android Activity 返回时携带参数(更新)

6.1 启动新的Activity

6.2 装载回传数据

6.3 获取回传数据

6.4 requestCode的限制


2 Android Activity综述

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

或者换个说法

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

2.1 Activity怎么用

我们新建的工程中带有一个基础activity。把它改改就能用。

新建工程中,需要注意3个文件。

  • MainActivity.java 在src/main/java里,对应的包名目录下。

  • activity_main.xml 在res/layout里。

  • AndroidManifest.xml 在src/main里。这里叫做“清单文件”。下文会介绍。

这3个文件分布在不同的地方。简单来说,java文件可以控制界面逻辑。

layout文件(这里指的是activity_main.xml)预设了UI如何摆放。

清单文件告诉系统,我这个app有哪些组件,申请了什么权限。

2.2 layout - 界面布局

新建的layout中,as一般会默认给一个 ConstraintLayout 。比如activity_main.xml

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">
  <!-- 省略默认的TextView -->
</androidx.constraintlayout.widget.ConstraintLayout>

这里为了用起来方便,我们把它换成LinearLayout。

有的朋友会问,都2022年了,为什么不直接用ConstraintLayout?

现在不做什么功能,先用LinearLayout,就是为了方便。 换成LinearLayout后,layout文件长这样。

换成LinearLayout后的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">
  <!-- 省略默认的TextView -->
</LinearLayout>

可以看到,标签的开头和结尾都换成了 LinearLayout 。其他地方暂时不修改。

as功能强大,非常便利。我们可以用鼠标选中标签开始的 androidx...Layout ,然后直接键盘输入LinearLayout 的前几位字母。

as会自动弹出选择框,在里面双击选择 LinearLayout 或者回车选择,标签就替换完成了。

2.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 ,就像下面。

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

现在TextView有了「身份证」,我们在activity中就可以找到它。用的是 findViewById 方法。

TextView tv1 = findViewById(R.id.tv1);

现在我们就拿到了界面上的这个TextView对象。可以对它进行操作了。

比如改变它显示的文字。

TextView tv1 = findViewById(R.id.tv1); // 拿到textView的对象
tv1.setText("Today is a good day.");  // 改变文字

2.4 AndroidManifest.xml - 清单文件

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

如果要新建activity,需要在清单中注册。

AndroidManifest.xml

<application
  android:allowBackup="true"
  android:icon="@mipmap/ic_launcher"
  android:label="@string/app_name"
  android:roundIcon="@mipmap/ic_launcher_round"
  android:supportsRtl="true"
  android:theme="@style/AppTheme">
  <activity android:name=".MainActivity">
    <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。可以观察到它设置了action和category属性。

  • android

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值