当前位置: 萬仟网 > 移动技术>移动开发>Android > Android四大组件之Activity详细介绍

Android四大组件之Activity详细介绍

2021年12月29日 Android 我要评论
目录理论概述activity的理解activity的定义activity的作用类比activity与servletintent的理解intent的分类intent的使用intentfilter的理解相

理论概述

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(string action) //与activity与的action匹配,使用这样的构造函数创建的intent对象就是隐式的,例如分享功能,也是启动另外一个activity,但是到底启动哪个activity,还不知道,由用户选择

携带数据

额外: putextra(string key, xxx value) 内部用map容器保存

有特定前缀: setdata(uri data) //tel:123123, smsto:123123

读取数据

额外:xxx getxxxextra(string key)

有特定前缀: uri getdata()

intentfilter的理解

在配置activity时,可以为activity指定一个intentfilter的配置

如果你的activity希望其他应用能访问到,需要配置<intent-filter>

如果这个activity是被内部应用的某个activity来访问的,就不需要配置<intent-filter>

如果想启动其他应用界面你必须用隐式的intent,且目标界面activity配置了<intent-filter>

相关的api

设置点击监听

activity中添加监听

view.setonclicklistener(onclicklistener listener);

layout中添加监听

layout中

<button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onclick="mainstart2"
    android:text="带回调启动"/>

activity中

package com.example.activity_01;
 
import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.widget.toast;
 
public class mainactivity extends activity {
 
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
    }
 
    public void mainstart2(view view) {
        toast.maketext(this, "带回调启动", toast.length_short).show();
    }
}

设置长按监听

view.setonlongclicklistener(onlongclicklistener 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. 实现一般返回:
	1). 在显示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;
 
import com.google.android.material.textfield.textinputedittext;
 
public class mainactivity extends activity implements view.onclicklistener {
 
    private textinputedittext main_message;
    private button btn_main_start1;
    private button btn_main_start2;
 
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
 
        // 视图对象并初始化
        main_message = findviewbyid(r.id.et_main_message);
        btn_main_start1 = findviewbyid(r.id.btn_main_start1);
        btn_main_start2 = findviewbyid(r.id.btn_main_start2);
 
        // 给视图设置监听
        btn_main_start1.setonclicklistener(this);
        btn_main_start2.setonclicklistener(this);
    }
 
    // 在回调方法中实现逻辑
    @override
    public void onclick(view view) { // view 就是发生(操作的)事件的视图对象
        if(view == btn_main_start1) {
            toast.maketext(this, "一般启动", toast.length_short).show();
        } else if (view == btn_main_start2) {
            toast.maketext(this, "带回调启动", toast.length_short).show();
        }
    }
}

实现一般启动

1). 定义好界面二
1). 布局
2). 定义activity类
3). 配置
4). 重写oncreate(), 并加载布局
2). 启动界面二
1). 创建intent对象(显式)
2). 通过intent携带额外数据
3). 启动activity
4). 得到intent对象
5). 通过intent读取额外数据
6). 显示到textinputedittext

配置清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.activity_01">
 
    <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/theme.activity_01">
        <!--
            android:name: 配置全类名,com.example.activity_01.secondactivity,可以将包名省略
            android:label: 定义一个activity的标题,可以引用一个字符串(必须在string.xml中有定义),也可以直接写字符串,但不建议
            secondactivity是由mainactivity(内部activity)来启动访问的,所以secondactivity不需要配置<intent-filter>
        -->
        <activity
            android:name=".secondactivity"
            android:label="@string/second_activity_label"
            android:exported="false" />
        <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>
 
</manifest>

 总结

到此这篇关于android四大组件之activity详解的文章就介绍到这了,更多相关android activity组件内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

  • 详解SpringBoot封装使用JDBC

    spring boot中可以在配置文件中直接进行数据库配置,spring.datasource.username= rootspring.datasource.password= …

    2021年12月29日 开发语言
  • 抖音剪辑视频软件叫什么(一半图片一半视频制作)

    一个好的抖音短视频播放量就可以达到几千万,涨粉量达到几十万。入驻抖音的个人和机构也越来越多了,但是很多人却不知道怎么做起,尤其是觉得运营一个抖音号的工作量很大。☞抖音剪辑工具☜①v…

    2021年12月29日 资讯
  • OpenCV利用高斯模糊实现简单的磨皮美颜效果

    目录1.高斯模糊1.什么是高斯模糊2.opencv提供的api2.双边模糊1.什么是双边模糊2.opencv的api3.磨皮美颜效果的实现1.实现过程2.主要代码3.效果1.高斯模…

    2021年12月29日 开发语言
  • 在Python中通过机器学习实现人体姿势估计

    目录什么是姿态估计?2d 与 3d 姿态估计为姿态估计准备数据集创建姿势估计模型模型结果结论姿态检测是计算机视觉领域的一个活跃研究领域。你可以从字面上找到数百篇研究论文和几个试图解…

    2021年12月29日 脚本编程
  • 社交电商运营逻辑有哪些(最重要的7个方面)

    本来,我想写,陈恺是谁?陈恺是旅划算的cmo,所有的全国市场的开拓,运营,都是他的事情。去年,旅划算做了20个亿,即使是疫情,旅划算,今年的业绩,也会超过20亿。他们目前在全国,有…

    2021年12月29日 资讯

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2022  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com