我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Jetpack Compose怎么实现对话框和进度条

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Jetpack Compose怎么实现对话框和进度条

这篇文章主要介绍“Jetpack Compose怎么实现对话框和进度条”,在日常操作中,相信很多人在Jetpack Compose怎么实现对话框和进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jetpack Compose怎么实现对话框和进度条”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

概述

对话框和进度条其实并无多大联系,放在一起写是因为两者的内容都不多,所以凑到一起,对话框是我们平时开发使用得比较多的组件,像隐私授权,用户点击删除时给用户提示这是一个危险操作等,进度条的使用频率也很高,比如下载文件,上传文件,处理任务时都可以使用进度条,让用户知道系统还在运行,没有死机。

实例解析

1.对话框Dialog

首先我们可以先看下Compose中对话框的参数列表

@Composablefun Dialog(    onDismissRequest: () -> Unit, // 当我们打算关闭对话框时会执行    properties: DialogProperties = DialogProperties(), // 对话框的属性,用于自定义    content: @Composable () -> Unit // 对话框的内容)

从对话框组件的参数列表来看,参数不多,只有三个,但是实现的内容却不输传统的view,其中content参数允许我们通过传入自己的Composable组件来描述对话框的界面,例如,我们想实现对话框Dialog的宽度不受限制,达到全屏的效果,代码如下:

 @OptIn(ExperimentalComposeUiApi::class)    @Composable    fun FullDialog() {        Dialog(            onDismissRequest = {  },            properties = DialogProperties(usePlatformDefaultWidth = false)        ) {            Surface(modifier = Modifier.fillMaxSize(), color = Color.Gray) {                Text(text = "Hello World")            }        }    }

properties 参数用于定制一些对话框特有的行为:

@Immutableclass DialogProperties @ExperimentalComposeUiApi constructor(    val dismissOnBackPress: Boolean = true, // 是否可以在按下系统返回键的时候取消对话框    val dismissOnClickOutside: Boolean = true,// 是否可以点击对话框以外的区域取消对话框    val securePolicy: SecureFlagPolicy = SecureFlagPolicy.Inherit,    @Suppress("EXPERIMENTAL_ANNOTATION_ON_WRONG_TARGET")    @get:ExperimentalComposeUiApi    val usePlatformDefaultWidth: Boolean = true // 对话框的内容是否需要限制在平台默认的范围之内)

需要注意的是,Compose的对话框不像传统视图的对话框那样,可以通过show(),dismiss()等命令的方式显示或者隐藏,它像不同的Compose组件一样,显示与否需要看是否在重组中被执行,也就是说在Comopose中对话框的显示或者隐藏要看状态的控制,Dialog和普通组件的不同之处在于对话框底层需要依赖独立的Window显示

下面我们看下如何使用状态控制对话框的显示和隐藏:

 @Composable    fun DialogDemo(){        val openDialog = remember {            mutableStateOf(true)        }        val dialogWidth = 200.dp        val dialogHeight = 50.dp        if(openDialog.value){            Dialog(onDismissRequest = { openDialog.value = false }) {                Box(modifier = Modifier                    .size(dialogWidth, dialogHeight)                    .background(Color.White)){                    Text(text = "Hello World")                }            }        }    }

运行结果如下:

Jetpack Compose怎么实现对话框和进度条

在Dialog组件显示的过程中,当点击对话框以外的区域时,onDismissRequest会触发执行,修改openDialog状态为false,从而触发DialogDemo重组,此时判断openDialog为false,Dialog无法被执行,对话框消失。

我们接下来再看下一个警告对话框应该怎么做,警告对话框(Alertdialog)组件是比Dialog组件更高级别的封装,遵循Material Design设计标准。它帮我们定好了标题,内容文本以及按钮的位置,我们只需要提供相应的内容即可,下面演示如何使用AlertDialog

    @Composable    fun AlertDialogDemo()    {        val openDialog = remember {            mutableStateOf(true)        }        if(openDialog.value){            AlertDialog(onDismissRequest = { openDialog.value = false },            title = {                Text(text = "开启位置服务")            }, text = {                Text(text = "这将意味着我们会给您提供精确的位置信息")                },            confirmButton = {                TextButton(onClick = { openDialog.value = false}) {                    Text(text = "同意")                }            },            dismissButton = {                TextButton(onClick = {  openDialog.value = false}) {                    Text(text = "取消")                }            })        }    }

运行结果:

Jetpack Compose怎么实现对话框和进度条

2.进度条

Compose自带了两种material Design进度条,分别是圆形进度条和直线进度条,他们都有两种状态,一种是无限加载的,另一种是根据值来动态显示的,我们就以一个圆形的进度条来演示Compose中进度条的使用吧,代码如下:

  @Composable    fun ProgressBarDemo()    {        var progress by remember {            mutableStateOf(0.1f)        }        val animatedProgress by animateFloatAsState(targetValue = progress,        animationSpec = ProgressIndicatorDefaults.ProgressAnimationSpec)        Column {            CircularProgressIndicator(progress = animatedProgress)            Spacer(modifier = Modifier.requiredHeight(30.dp))            OutlinedButton(onClick = { if (progress < 1f) progress += 0.1f}) {                Text(text = "增加进度")            }        }    }

运行结果如下:

Jetpack Compose怎么实现对话框和进度条

如上面代码所示,当我们点击一次按钮时,进度就会增加10%,当不设置progress时,就是无限加载的进度条,另外,还有一种时直线进度条(LinearProgressIndicator),使用方法和圆形进度条完全一致

到此,关于“Jetpack Compose怎么实现对话框和进度条”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Jetpack Compose怎么实现对话框和进度条

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Jetpack Compose怎么实现对话框和进度条

这篇文章主要介绍“Jetpack Compose怎么实现对话框和进度条”,在日常操作中,相信很多人在Jetpack Compose怎么实现对话框和进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jetpa
2023-07-06

JetpackCompose实现对话框和进度条实例解析

对话框和进度条其实并无多大联系,放在一起写是因为两者的内容都不多,所以凑到一起,对话框是我们平时开发使用得比较多的组件,进度条的使用频率也很高,比如下载文件,上传文件,处理任务时都可以使用进度条
2023-05-16

实例详解Android自定义ProgressDialog进度条对话框的实现

Android SDK已经提供有进度条组件ProgressDialog组件,但用的时候我们会发现可能风格与我们应用的整体风格不太搭配,而且ProgressDialog的可定制行也不太强,这时就需要我们自定义实现一个ProgressDialo
2022-06-06

Android 中通过实现线程更新Progressdialog (对话进度条)

作为开发者我们需要经常站在用户角度考虑问题,比如在应用商城下载软件时,当用户点击下载按钮,则会有下载进度提示页面出现,现在我们通过线程休眠的方式模拟下载进度更新的演示,如图(这里为了截图方便设置对话进度条位于屏幕上方):layout界面代码
2022-06-06

Android中怎么实现对话框

这篇文章将为大家详细讲解有关Android中怎么实现对话框,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 弹出普通对话框 --- 系统更新 //弹出普通对话框 public void
2023-05-30

Java awt对话框怎么实现

这篇文章主要讲解了“Java awt对话框怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java awt对话框怎么实现”吧!Java awt-对话框简单实现import java.a
2023-06-21

Android怎么实现进度条

在Android中可以通过ProgressBar控件来实现进度条的显示和更新。下面是一个简单的例子,演示了如何在Android中使用ProgressBar控件。1. 在XML布局文件中添加ProgressBar控件:```xmlandroi
2023-08-12

vb进度条怎么实现

VB中实现进度条可以使用ProgressBar控件。具体步骤如下:1. 在窗体中添加一个ProgressBar控件。2. 设置ProgressBar的最小值和最大值,以确定进度条的范围。例如,可以将最小值设置为0,最大值设置为100。3.
2023-06-10

PyQt5怎么实现颜色对话框

这篇文章主要介绍了PyQt5怎么实现颜色对话框的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PyQt5怎么实现颜色对话框文章都会有所收获,下面我们一起来看看吧。颜色对话框通过颜色对话框(QColorDialog
2023-07-05

PyQt5怎么实现输入对话框

这篇文章主要介绍了PyQt5怎么实现输入对话框的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PyQt5怎么实现输入对话框文章都会有所收获,下面我们一起来看看吧。输入对话框输入对话框,用于弹窗获取用户的输入信息,
2023-07-05

Python怎么实现进度条式

这篇文章主要介绍“Python怎么实现进度条式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现进度条式”文章能帮助大家解决问题。Progress第一个要介绍的 Python 库是
2023-06-27

怎么在Android中实现一个对话框

怎么在Android中实现一个对话框?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。2个按钮public class MainActivity extends Activit
2023-05-30

java圆形进度条怎么实现

以下是一个简单的Java圆形进度条的实现代码:import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics
2023-05-13

php怎么实现下载进度条

本篇内容主要讲解“php怎么实现下载进度条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么实现下载进度条”吧!php实现下载进度条的方法:1、创建“download.php”文件,代码如
2023-06-25

android怎么实现水平进度条

在Android中,可以使用ProgressBar控件来实现水平进度条。下面是一种简单的实现方法:1. 首先,在XML布局文件中添加一个ProgressBar控件:```xmlandroid:id="@+id/progressBar"and
2023-08-12

mfc怎么实现对话框自动关闭

要实现对话框自动关闭,可以使用定时器来实现。具体步骤如下:在对话框类的头文件中添加定时器的ID号,例如:`#define TIMER_ID_CLOSE_DIALOG 1001`。在对话框类的OnInitDialog()函数中添加定时器,设置
mfc怎么实现对话框自动关闭
2023-10-28

HTML怎么实现文件下载对话框

本篇内容介绍了“HTML怎么实现文件下载对话框”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文件下载对话框我们先在当前目录下创建 foo.t
2023-06-08

python文本进度条怎么实现

本篇内容介绍了“python文本进度条怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1,刚开始(可能会很low)import tim
2023-06-22

使用Qt怎么实现进度条

本篇文章为大家展示了使用Qt怎么实现进度条,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、前言  有时我们需要在表格(QTableWidget)、树状栏(QTreeWidget)中直观显示任务进度
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录