Activity详解,用最通俗的语言告诉你什么是Activity(一)

大家好,我是小布丁。

今天还是分享Android基础知识,有Android基础的朋友都知道,Activity作为Android四大组件之一,掌管可视化界面。也是大多数人刚接触Android学的第一课。下面我来带大家学习/复习这部分知识,请大家不吝赐教,共同进步!

什么是Activity?

Activity是Android四大组件之一,是用户可视化的界面,界面中放置各种UI组件给用户操作及展示信息。我们打开一个应用,看到的整个页面就是一个Activity。

创建Activity的流程(纯新手向,大佬可以略过)

打开Android Studio,选择New project,进入此页面

选择Empty Views Activity,点击Next:

Name:项目名称,可以自己起

Package name:包名,会根据Name自动生成

Save location:项目的保存路径

Language:在本系列的安卓学习中,都使用Kotlin语言

点击Finish,生成新项目。

进入这个路径,可以看到系统自动给我们生成的Activity。

Activity的内容解析

这就是刚生成的MainActivity中的所有内容了,大家可能会好奇,为什么系统给我们自动生成的Activity叫做主Activity(MainActivity)呢?听我慢慢道来,每个项目都会有一个主Activity,在打开任意一个手机APP的时候,都会有一个主页面,就像打开B站(APP)就能看到首页推荐视频(主页面),这个主页面就是项目中的主Activity。这样说你明白了吗?

接下来详细介绍一下Activity中的代码都是什么含义:

复制代码
class MainActivity:AppCompatActivity()

定义一个类MainActivity,继承AppCompatActivity,class Activity是Android系统的一个基类,所有自定义的Activity都需要继承class Activity或它的派生类才能拥有Activity的特性,AppCompatActivity是它的派生类,所以MainActivity需要继承AppCompatActivity。

复制代码
override fun onCreate(saveInstanceState: Bundle?)

MainActivity中重写onCreate函数,所有的Activity类都需要重写onCreate函数,这个函数在Activity被创建后调用,参数后续会详细分析

复制代码
super.onCreate(saveInstanceState)

调用父类的onCreate()函数。

复制代码
setContentView(R.layout.activity_main)

Android讲究逻辑和视图相分离,最好每一个Activity对应一个布局。布局是指页面的样式排布,打开一个Activity页面是什么样式由布局决定,按钮等控件的逻辑是由Activity决定。这行代码就是把布局文件activity_main引入类MainActivity中,MainActivity的布局由activity_main决定。

布局文件activity_main中的代码都是什么含义?
复制代码
<?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        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

TextView是一个文本框控件,android:layout_width="wrap_content"定义控件的宽,wrap_content在这的含义是"TextView的宽刚好能容纳文字",还有一个选项是"match_parent",表示和父容器一样宽。android:layout_height="wrap_content"定义控件的高度,在这的含义是"TextView的高刚好能容纳文字"。

app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"在这篇文章(https://mp.‍w‍eixin.q‍q.com/s/mfL3_p9obKrFN018aNLS4g)中有介绍,需要的话可以看看。

在AndroidManifest.xml文件中注册

所有的Activity都要在AndroidManifest.xml文件中注册才能生效。那怎么注册呢?打开AndroidManifest文件我们会发现:

MainActivity已经被注册了!怎么样,Android Studio还是很智能吧~

怎样销毁一个Activity?

大家都知道,按一下Back键就可以销毁当前的Activity,那还有什么别的办法吗?如果要实现在页面上点击一个按钮就能销毁Activity的功能,你会怎么实现呢?

其实很简单,Activity提供了一个函数finish,调用这个函数就可以销毁当前Activity了。

复制代码
button.setOnCLickListener{ //点击按钮后执行{}中的逻辑    finish()}

END

我是小布丁,一个在某互联网中厂苟且偷生的菜鸡,有一个公众号:码农小家园

欢迎关注,您的点赞是我最大的动力。

相关推荐
我命由我123453 天前
Android Studio 问题:Android Studio 一直开在 Updating indexes
android·java·ide·java-ee·android studio·android jetpack·android-studio
~央千澈~8 天前
【03】完整开发腾讯云播放器SDK的UniApp官方UTS插件——优雅草上架插件市场-卓伊凡
android-studio·android开发·uts·uts原生插件
我命由我1234517 天前
Android 开发问题:Plugin [id: ‘org.jetbrains.kotlin.android‘] was not found
android·java·开发语言·java-ee·kotlin·安卓·android-studio
MADAO_luv18 天前
Android Studio里的BLE数据接收策略
android-studio·低功耗蓝牙·bluetooth
我命由我1234523 天前
Kotlin 极简小抄 P10(类与对象、主构造函数、带有默认参数值的主构造函数、次要构造函数)
java·开发语言·vscode·java-ee·kotlin·安卓·android-studio
我命由我1234525 天前
Android 动态申请 REQUEST_INSTALL_PACKAGES 权限问题:申请权限失败
android·java·开发语言·java-ee·android studio·android jetpack·android-studio
我命由我123451 个月前
Android 解绑服务问题:java.lang.IllegalArgumentException: Service not registered
android·java·开发语言·java-ee·安卓·android jetpack·android-studio
我命由我123452 个月前
MQTT - Android MQTT 编码实战(MQTT 客户端创建、MQTT 客户端事件、MQTT 客户端连接配置、MQTT 客户端主题)
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
2401_890665862 个月前
免费送源码:Java+ssm+HTML 三分糖——甜品店网站设计与实现 计算机毕业设计原创定制
java·python·微信小程序·html·php·课程设计·android-studio
还是鼠鼠2 个月前
Android移动应用开发入门示例:Activity跳转界面
android·前端·gitee·android studio·android-studio