把Activity当做dialog对话框使用

news2024/12/25 0:07:47

1、引言

        在安卓开发中对话框的使用是不可避免的,但是原生的对话框用起来总感觉差点意思,而且位置不好控制,在与界面的交互上也不够灵活,没有像activity那样的生命周期方法,以至于某些特殊的功能无法实现。此时我们就希望有一种组件能代替对话框的作用,并且有各式各样的生命周期方法,便于控制,针对这种情况我们可以考虑把activity转化为对话框,接下来就以此为例,简单演示如何使用activity类型的对话框。

2、继承于activity类

        被当做对话框使用的activity,必须继承于activity类,不能继承AppCompatActivity类,否则会直接报错。

3、设置并配置主题

        要想把activity当做对话框使用,还必须为其配置主题并在配置文件中引用该主题,相关代码如下:

3.1、activity的主题代码

<!--  弹出主界面的Activity类型的dialog  -->
    <style name="ActivityDialog" parent="android:Theme.Dialog">
        <!--设置dialog的背景-->
        <item name="android:windowBackground"
            >@android:color/transparent</item>
        <!--设置无标题-->
        <item name="android:windowNoTitle">true</item>
        <!--window Is Translucent 窗口是半透明的-->
        <item name="android:windowIsTranslucent">true</item>
        //backgroundDimEnabled设置被盖住的背景是否模糊,false时背景正常
        <item name="android:backgroundDimEnabled">true</item>
    </style>

3.2、activity的配置代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.Novel">
        <activity
            android:name=".DialogActivity"
            android:theme="@style/ActivityDialog"
            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>

3.3、主界面布局

<?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"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/btn_start"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="启动Activity类型的dialog"
        android:layout_marginHorizontal="5dp"
        android:textSize="25sp"/>
</LinearLayout>

3.4、主界面代码

package xyz.dritrtj.dialog;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private Button btn_start;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_start = findViewById(R.id.btn_start);
        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,DialogActivity.class));
            }
        });
    }
}

3.5、activity对话框布局

<?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"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".DialogActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:text="我是Activity类型的Dialog"
        android:textColor="#00ff00"/>
</LinearLayout>

3.6、activity对话框代码

package xyz.dritrtj.dialog;

import android.app.Activity;
import android.os.Bundle;

public class DialogActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
    }
}

4、效果

4.1、真机效果

 4.2、模拟器效果

5、总结

        模拟器上显示背景是黑色的这个不用管,只要在真机上显示没问题就行了,由于这里已经把activity转化为对话框使用,因此被当做对话框的activity不能操作状态栏,其它操作和普通activity一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1452875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习主流开源框架:Caffe、TensorFlow、Pytorch、Theano、Keras、MXNet、Chainer

2.6 深度学习主流开源框架 表2.1 深度学习主流框架参数对比 框架关键词总结 框架关键词基本数据结构&#xff08;都是高维数组&#xff09;Caffe“在工业中应用较为广泛”&#xff0c;“编译安装麻烦一点”BlobTensorFlow“安装简单pip”TensorPytorch“定位&#xff1a;快…

数据库MySQL中出现乱码和表格不对齐怎么解决

MySQL中出现乱码问题及解决办法&#xff1a; 情况类似&#xff1a; 首先进入到数据库中&#xff0c;命令&#xff1a;mysql -h localhost -uroot -p或者mysql -uroot -p;进入数据库后选择一个你的数据库查看表中的中文是否乱码 以上是数据库中表格出现乱码情况&#xff0c;原…

项目架构梳理

单点登录组件 CREATE TABLE user_info (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增主键,用户id,username varchar(30) NOT NULL COMMENT 用户姓名,password varchar(60) NOT NULL COMMENT 密码,token varchar(60) DEFAULT NULL COMMENT token,token_expire datetime DEF…

1.8 NLP自然语言处理

NLP自然语言处理 更多内容&#xff0c;请关注&#xff1a; github&#xff1a;https://github.com/gotonote/Autopilot-Notes.git 一、简介 seq2seq(Sequence to Sequence)是一种输入不定长序列&#xff0c;产生不定长序列的模型&#xff0c;典型的处理任务是机器翻译&#…

BUGKU-WEB game1

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; 是一个盖楼的游戏&#xff01; 解题思路 先看看源码&#xff0c;好像没发现什么特别的是不是要得到一定的分数才会有对应的flag&#xff1f;查看下F12&#xff0c;请求链接发现&#xff0c;这不就提示了 相…

第13章 网络 Page738~741 13.8.3 TCP/UDP简述

libcurl是C语言写成的网络编程工具库&#xff0c;asio是C写的网络编程的基础类型库 libcurl只用于客户端&#xff0c;asio既可以写客户端&#xff0c;也可以写服务端 libcurl实现了HTTP\FTP等应用层协议&#xff0c;但asio却只实现了传输层TCP/UDP等协议。 在学习http时介绍…

九大问题困扰企业财务数字化转型,你准备好解决了吗?

随着数字化浪潮的推进&#xff0c;企业财务管理也迎来了转型的关键时刻。然而&#xff0c;多年的数字化转型经验告诉我们&#xff0c;企业在这一过程中普遍面临着许多挑战和痛点。接下来&#xff0c;我们将逐一深入剖析这些痛点&#xff0c;并探讨如何有效应对。 一、数据孤岛问…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(3)数据准备初步

今天来学习数据准备。 一个AI项目要包括构建数据集、数据清理和数据融合、数据采集、特征工程、算法改进和其他步骤。 数据采集和数据清洗&#xff0c;也就是数据准备&#xff0c;要占到人工智能项目一半以上的工作量。 训练的数据量越大&#xff0c;模型越准确。 建立数据标…

一篇文章入门postmain接口测试

一、了解接口和接口测试 1、什么是接口? 电脑&#xff1a;USB&#xff0c;投影机(数据传输) 软件&#xff1a;统称APl,application,program,interface,微信提现和充值&#xff0c;支付宝支付&#xff0c;银联支付接口。(鉴权码&#xff1a;token,key,appkey) 2、接口包括&…

关于umi ui图标未显示问题

使用ant design pro 时&#xff0c;安装了umi ui &#xff0c;安装命令&#xff1a; yarn add umijs/preset-ui -D但是启动项目后&#xff0c;发现没有显示umi ui的图标 找了许多解决方案&#xff0c;发现 umi的版本问题&#xff0c;由于我使用的ant design pro官网最新版本&a…

tf.linspace时出现Could not find valid device for node.

背景&#xff1a; 在使用tensorflow2.x的时候,当使用tf.linspace的时候会出现如下的报错&#xff1a; import os os.environ[TF_CPP_MIN_LOG_LEVEL] 2import tensorflow as tf from tensorflow import keras import numpy as npdef out():# x tf.constant(np.arange(12).re…

实现低功耗设计的嵌入式系统技术

&#xff08;本文为简单介绍&#xff0c;观点来源网络&#xff09; 在嵌入式系统设计中&#xff0c;追求低功耗已成为一个核心指标&#xff0c;旨在延长设备的运行时间并提升能效。实现这一目标的途径是多元的&#xff0c;涉及从硬件选型到软件算法的各个层面。 首先&#xf…

顺序结构实现栈

顺序结构实现栈 1. 栈1.1 栈的概念及结构1.2栈的实现 2. 栈的各种函数实现3. 全部代码实现 1. 栈 1.1 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为…

浅析太阳能电池量子效率测试系统的主要组成部分

太阳能电池量子效率测试系统是用于对太阳能电池进行量子效率测试的设备。量子效率是指太阳能电池在接收光照射时&#xff0c;将光子转化为电子的效率。太阳能电池的量子效率越高&#xff0c;其转化光能为电能的效率就越高。主要由以下几个组成部分构成&#xff1a; 光源&#x…

MIT-BEVFusion系列八--onnx导出2 spconv network网络导出

这里写目录标题 export-scn.py加载模型设置每层的精度属性初始化输入参数导出模型model.encoder_layers 设置初始化参数设置 indice_key 属性更改 lidar backbone 的 forward更改lidar网络内各个层的forward带参数装饰器&#xff0c;钩子函数代码使用装饰器修改forward举例 跟踪…

SpringBoot实战第五天

最后在开发一个文件上传接口&#xff0c;结束后端部分开发 文件上传接口 先看接口文档 阅读接口文档&#xff0c;唯一问题就是项目暂时还没有传到服务器上&#xff0c;所以对文件的存储与读取暂时在项目本地进行 Controller层 RestController public class FileUploadCont…

探索设计模式的魅力:揭秘模版方法模式-让你的代码既灵活又可维护

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、开篇二、应用场景一坨坨代码实现存在的问题 三、解决方案模式方法结构示意图及说明用模板方法模式重构示例解决的问题 四、工作原理使用模板方法模式重写示例结构图核心结构&#xff1a;抽象类和具体实现 五、总结…

IDEA 的28 个天花板技巧,yyds!

IDEA 作为Java开发工具的后起之秀,几乎以碾压之势把其他对手甩在了身后,主要原因还是归功于:好用;虽然有点重,但依旧瑕不掩瑜,内置了非常多的功能,大大提高了日常的开发效率,下面汇总了常用的28个使用小技巧,学会之后,让你的撸码效率直接起飞... 注意:不同idea版本菜…

计算机二级之sql语言的学习(数据模型—概念模型)

概念模型 含义: 概念模型用于信息世界&#xff08;作用对象&#xff09;的建模&#xff0c;是实现现实世界到信息世界&#xff08;所以万丈高楼平地起&#xff0c;不断地学习相关的基础知识&#xff0c;保持不断地重复才能掌握最为基础的基础知识&#xff09;的概念抽象&#…

SG5032VEN晶体振荡器SPXO

在高速数字通信和精密电子系统中&#xff0c;时钟信号的质量至关重要。SG5032VEN晶体振荡器&#xff08;SPXO&#xff09;凭借其低相位抖动的LVDS输出&#xff0c;为这些应用提供了理想选择。提供频率范围:200.1 MHz ~ 500mhz&#xff0c;满足了从高速网络到数据中心等不同应用…