Android四大组件之Activity详解:定义、作用与用户交互接口解析
Android四大组件之Activity详细介绍

2021 年 12 月 29 日 15 时 53 分 44 秒进行了更新,更新者是胡椒粉 0121。
大家好,本篇文章主要讲述的内容是关于 Android 四大组件中的 Activity 并进行详细讲解。对此感兴趣的同学,赶紧来看看吧。如果对你有帮助,记得将其收藏起来,这样方便下次浏览。
目录
理论概述Activity的理解Activity的定义
Activity,其字面意思为活动。它是 Android 所定义的四大应用组件之一,并且在实际应用中是最为重要且使用频率最高的。
一个应用有多个界面,也就是包含多个Activity
Activity的作用
用来提供一个能够让用户操作并与之交互的界面
一个 Activity 就像是一个容器,它是用来存放各种控件的。同时,它也可以被理解为是与用户进行交互的接口。
类比Activity与Servlet
Intent的理解
Intent,直译为意图,也就是你想要做什么或者想要去哪
Intent 是 Activity、Service、BroadcastReceiver 这三个组件间通信的信使,然而它并非 Android 中的四大组件之一。
要在 Activity 中启动另一个 Activity 就需要用到 Intent 对象。Intent 对象还具备携带数据的功能。
Intent的分类
明确指定目标组件的意图,也就是清楚知道要做什么或者要去哪里,在操作当前应用自己的组件时使用显式 Intent。
没有明确指定目标组件的意图,也就是不清楚要做什么或者要去哪里,在操作其他应用自己的组件时会使用隐式 Intent。
Intent的使用
创建
使用 Intent(Context context, Class activityClass)这样的构造函数创建的 Intent 对象是显式的。
Intent 有一个构造函数 Intent(String action),它与 Activity 的 action 相匹配。使用这样的构造函数创建的 Intent 对象是隐式的。例如分享功能,它也是启动另外一个 Activity,但具体启动哪个 Activity 并不清楚,而是由用户来选择。
携带数据
额外的是,putExtra 这个方法,它带有一个字符串类型的 key 和一个 Xxx 类型的 value 参数,在其内部是使用 map 容器来进行保存的。
有特定前缀,其中包含 setData(Uri data),具体有 tel:123123 和 smsto:123123
读取数据
额外的是:Xxx 获取额外的内容(String 类型的 key)。
有特定前缀: Uri getData()
IntentFilter的理解
在配置 Activity 的过程中,能够给 Activity 设定一个 IntentFilter 的配置。
如果你的Activity希望其他应用能访问到,需要配置
如果某个 Activity 是被内部应用的 Activity 来访问的,那么就不需要进行配置。
如果你想启动其他应用的界面,就必须使用隐式的 intent,并且目标界面的 Activity 已经进行了配置。
相关的API设置点击监听Activity中添加监听
view 有一个点击事件的设置,即设置一个点击监听器 listener ,通过调用 view 的 setOnClickListener 方法来实现。
layout中添加监听
layout中
Activity中
在 com.example 包下的 activity_01 中。
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
MainActivity 以 Activity 为父类进行了继承。
@Override
在 onCreate 方法且带有 Bundle savedInstanceState 参数的情况下,进行了保护方面的工作。
super 执行了 onCreate(savedInstanceState) 方法。
设置内容视图为 R.layout.activity_main ;
}
公共方法 MainStart2 接收一个 View 类型的参数 view 。
使用 this 来创建一个 Toast 对象,设置显示的文本为“带回调启动”,设置显示时长为短时长(Toast.LENGTH_SHORT),然后调用 show 方法来显示该 Toast。
}
}
设置长按监听
view.setOnLongClickListener,该监听器为 listener。
Activity的开发开发流程
1. 界面布局 2. 实现Activity的功能 1). 定义所有需要操作的视图对象并初始化 2). 给视图设置监听 3). 在回调方法中实现逻辑 3. 实现一般启动 1). 定义好界面二 1). 布局 2). 定义Activity类 3). 配置 4). 重写onCreate(), 并加载布局 2). 启动界面二 1). 创建Intent对象(显式) 2). 通过intent携带额外数据 3). 启动Activity 4). 得到intent对象 5). 通过intent读取额外数据 6). 显示到EditText 4. 实现一般返回: 显示 Second 界面的时候,Main 界面是存在的,只是被其他部分遮盖住了。 2). 关闭当前界面: finish()
Activity的使用
界面布局
实现Activity的功能
1). 定义所有需要操作的视图对象并初始化
2). 给视图设置监听
3). 在回调方法中实现逻辑
package com.example.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
引入 com.google.android.material.textfield.TextInputEditText;
公共类 MainActivity 继承自 Activity 并实现了 View.OnClickListener 接口。
创建了一个名为 main_message 的私有 TextInputEditText 对象。
有一个私有的按钮 btn_main_start1 。
有一个私有按钮叫做 btn_main_start2 。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 视图对象并初始化
通过 findViewById 方法找到 id 为 R.id.et_main_message 的视图,将其赋值给 main_message 变量。
通过 findViewById 方法找到 id 为 R.id.btn_main_start1 的按钮,将其赋值给 btn_main_start1 。
通过 findViewById 方法找到 id 为 R.id.btn_main_start2 的按钮,将其赋值给 btn_main_start2 。
// 给视图设置监听
btn_main_start1 点击事件设置为当前对象 this
btn_main_start2 点击时会调用 this 所对应的方法。
}
// 在回调方法中实现逻辑
@Override
公共的方法 onClick 接收一个 View 类型的参数 view,这个 view 就是发生(操作的)事件所对应的视图对象。
if(view == btn_main_start1) {
使用 this 来创建一个 Toast 对象,设置显示的文本为“一般启动”,设置显示时长为短时长(Toast.LENGTH_SHORT),然后调用 show 方法来显示该 Toast。
如果 view 等于 btn_main_start2 ,那么
使用 this 来创建一个 Toast 对象,设置显示的文本为“带回调启动”,设置显示时长为短时长(Toast.LENGTH_SHORT),然后调用 show 方法来显示该 Toast。
}
}
}
实现一般启动
1). 定义好界面二
1). 布局
2). 定义Activity类
3). 配置
4). 重写onCreate(), 并加载布局
2). 启动界面二
1). 创建Intent对象(显式)
2). 通过intent携带额外数据
3). 启动Activity
4). 得到intent对象
5). 通过intent读取额外数据
6). 显示到TextInputEditText
配置清单
总结
这篇关于 Android 四大组件之 Activity 详解的文章到此就介绍完毕了。如果想要了解更多相关 Android Activity 组件的内容,可以搜索脚本之家以前的文章,或者继续浏览下面的相关文章。希望大家以后能够多多支持脚本之家!
Android React gradle下载慢疑问处置 Native (android是什么)
构造器(构造方法)的作用与用法详解:无参与有参构造器区别及初始化对象
android为什么要经常使用jni (android应用商店)
android与j2me j2ee有什么相关 (android应用商店)
Studio中的Gradle相当于eclipse Android疑问 gradle是个什么物品 Android ADT中的adb吗 (studio翻译成中文)
Android Studio为什么要用Gradle (android是什么)
gradle是个什么物品 Studio中的Gradle相当于eclipse ADT中的adb吗 Android疑问 Android (gradle和maven的区别 哪个主流)