iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Jetpack Compose怎么实现对话框和进度条
  • 204
分享到

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

2023-07-06 05:07:00 204人浏览 独家记忆
摘要

这篇文章主要介绍“Jetpack Compose怎么实现对话框和进度条”,在日常操作中,相信很多人在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怎么实现对话框和进度条”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Jetpack Compose怎么实现对话框和进度条

本文链接: https://www.lsjlt.com/news/357830.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Jetpack Compose怎么实现对话框和进度条
    这篇文章主要介绍“Jetpack Compose怎么实现对话框和进度条”,在日常操作中,相信很多人在Jetpack Compose怎么实现对话框和进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-07-06
  • JetpackCompose实现对话框和进度条实例解析
    目录概述实例解析1.对话框Dialog2.进度条总结概述 对话框和进度条其实并无多大联系,放在一起写是因为两者的内容都不多,所以凑到一起,对话框是我们平时开发使用得比较多的组件,像隐...
    99+
    2023-05-16
    Jetpack Compose实现对话框 Jetpack Compose实现进度条
  • CSS怎么实现进度条和订单进度条
    这篇文章主要讲解了“CSS怎么实现进度条和订单进度条 ”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS怎么实现进度条和订单进度条 ”吧!简单地效果图如下...
    99+
    2024-04-02
  • Jetpack Compose怎么实现动画效果
    这篇文章将为大家详细讲解有关Jetpack Compose怎么实现动画效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述compose 为支持动画提供了大量的 api,通过这些 api 我们...
    99+
    2023-06-29
  • Java awt对话框怎么实现
    这篇文章主要讲解了“Java awt对话框怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java awt对话框怎么实现”吧!Java awt-对话框简单实现imp...
    99+
    2023-06-21
  • Android中怎么实现对话框
    这篇文章将为大家详细讲解有关Android中怎么实现对话框,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 弹出普通对话框 --- 系统更新 //弹出普通对话框 &nbs...
    99+
    2023-05-30
    android
  • CSS如何实现进度条和订单进度条
    小编给大家分享一下CSS如何实现进度条和订单进度条,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简单地效果图如下:CSS实现进度条:html结构:<div&...
    99+
    2023-06-08
  • Android怎么实现进度条
    在Android中可以通过ProgressBar控件来实现进度条的显示和更新。下面是一个简单的例子,演示了如何在Android中使用...
    99+
    2023-08-12
    Android
  • vb进度条怎么实现
    VB中实现进度条可以使用ProgressBar控件。具体步骤如下:1. 在窗体中添加一个ProgressBar控件。2. 设置Pro...
    99+
    2023-06-10
    vb进度条
  • PyQt5怎么实现颜色对话框
    这篇文章主要介绍了PyQt5怎么实现颜色对话框的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PyQt5怎么实现颜色对话框文章都会有所收获,下面我们一起来看看吧。颜色对话框通过颜色对话框(QColorDialog...
    99+
    2023-07-05
  • PyQt5怎么实现输入对话框
    这篇文章主要介绍了PyQt5怎么实现输入对话框的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PyQt5怎么实现输入对话框文章都会有所收获,下面我们一起来看看吧。输入对话框输入对话框,用于弹窗获取用户的输入信息,...
    99+
    2023-07-05
  • android怎么设置对话框宽度
    在Android中,可以使用Dialog类来创建对话框,并且可以通过setLayoutParams()方法来设置对话框的宽度。首先,...
    99+
    2023-08-23
    android
  • css横向进度条和竖向进度条如何实现
    这篇文章将为大家详细讲解有关css横向进度条和竖向进度条如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、横向进度条<html><head><title>横向进...
    99+
    2023-06-08
  • Python怎么实现进度条式
    这篇文章主要介绍“Python怎么实现进度条式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现进度条式”文章能帮助大家解决问题。Progress第一个要介绍的 Python 库是 ...
    99+
    2023-06-27
  • 使用Qt怎么实现进度条
    本篇文章为大家展示了使用Qt怎么实现进度条,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、前言  有时我们需要在表格(QTableWidget)、树状栏(QTreeWidget)中直观显示任务进度...
    99+
    2023-06-15
  • python文本进度条怎么实现
    本篇内容介绍了“python文本进度条怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1,刚开始(可能会很low)import&nbs...
    99+
    2023-06-22
  • android怎么实现水平进度条
    在Android中,可以使用ProgressBar控件来实现水平进度条。下面是一种简单的实现方法:1. 首先,在XML布局文件中添加...
    99+
    2023-08-12
    android
  • MFC圆形进度条怎么实现
    MFC(Microsoft Foundation Class)是用于开发Windows应用程序的一套类库。要实现MFC圆形进度条,可...
    99+
    2023-08-20
    MFC
  • java怎么实现进度条显示
    在Java中,可以使用Swing组件库中的JProgressBar类来实现进度条显示。以下是一个简单的示例代码:```javaimp...
    99+
    2023-09-28
    java
  • java圆形进度条怎么实现
    以下是一个简单的Java圆形进度条的实现代码:import java.awt.Color;import java.awt.Dimen...
    99+
    2023-05-13
    java圆形进度条 java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作