使用 Jetpack Compose 构建 CircularProgressIndicator

news2024/11/18 13:57:57

欢迎阅读这篇关于如何使用 Jetpack Compose 构建 CircularProgressIndicator(圆形进度指示器)的博客。Jetpack Compose 是 Google 推出的一款现代化 UI 工具包,用于构建 Android 界面。其声明式的设计使得 UI 开发更加简洁、直观。

一、什么是 CircularProgressIndicator?

CircularProgressIndicator 是一种圆形的进度指示器,通常用于显示一个操作的完成进度,这个操作通常需要一段时间才能完成,例如文件的下载或数据的加载。CircularProgressIndicator 可以显示一个具体的进度,也可以显示一个正在进行中的指示符,以表示进度不确定。

二、如何使用 Jetpack Compose 构建 CircularProgressIndicator?

Jetpack Compose 提供了一个名为 CircularProgressIndicator 的 composable 函数,用于创建圆形进度指示器。下面是一个简单的示例:

@Preview
@Composable
fun CircularProgressIndicator(){
    var progress by remember { mutableStateOf(0.1f) }

    Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center){
        Button(onClick = { if(progress<1f) progress += 0.1f},
            modifier = Modifier.padding(16.dp)){
            Text("Increase Progress")
        }
        androidx.compose.material.CircularProgressIndicator(progress = progress,Modifier.padding(16.dp))

    }
}

 

在这个例子中,我们首先定义了一个可观察的状态 progress,用于表示进度指示器的当前进度。然后,我们创建了一个 Button,当用户点击这个按钮时,progress 的值会增加 0.1。最后,我们创建了一个 CircularProgressIndicator,并将其 progress 属性与我们的 progress 状态相绑定,这样进度指示器的进度就会根据 progress 的值自动更新。

如果你想创建一个表示不确定进度的进度指示器,你可以调用不接受任何参数的 CircularProgressIndicator 函数:

CircularProgressIndicator(modifier = Modifier.padding(16.dp))

 三、自定义CircularProgressIndicator

@Preview
@Composable
fun CircularProgressIndicatorSample(){
    var progress by remember { mutableStateOf(0.8f) }
    androidx.compose.material.CircularProgressIndicator(
        progress, color = MaterialTheme.colors.secondary,
        strokeWidth = 5.dp
    )
}

 在上面的代码中,我们修改了 CircularProgressIndicator 的颜色和描边宽度。

结论

通过这篇博客,我们深入了解了 Jetpack Compose 的 CircularProgressIndicator 组件。这个组件为表示长时间运行的操作提供了一种有效的方式。在 Jetpack Compose 的帮助下,你可以通过简单、直观的代码来创建和自定义 CircularProgressIndicator。

这是你学习和使用 Jetpack Compose 的重要一步,希望你从这篇博客中学到了有价值的信息。谢谢你的阅读,期待在下一篇博客中见到你!

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

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

相关文章

Spring 中的 bean 是线程安全的吗?

spring 是一款非常流行的 Java 开源框架&#xff0c;它主要用于构建企业级应用程序。Spring 的 IoC 和AOP技术能够帮助开发人员更加便捷地组织和管理 Java 代码。 在 Spring 中&#xff0c;bean 默认是单例模式&#xff0c;也就是说&#xff0c;每个 bean 只会被 Spring 容器创…

Mac电脑硬件/软件运行状况查看工具

iStat Menus是一款系统监控和管理工具&#xff0c;旨在帮助Mac用户实时监控电脑的各项硬件和软件信息。它以直观和定制化的方式提供了丰富的系统状态指标&#xff0c;让用户能够全面了解和管理自己的Mac电脑。 iStat Menus提供了一系列的菜单栏指示项目&#xff0c;可以显示诸如…

NoSQL之 Redis 配置与优化

目录 一、关系型数据库与非关系型数据库1.1 关系型数据库&#xff1a;1.2 非关系型数据库1.3 关系型数据库和非关系数据库的区别1.3.1 数据存储方式不同1.3.2 扩展方式不同1.3.3 对事务性的支持不同 1.4 非关系型数据库的产生背景1.5 总结 二、Redis介绍三、 Redis 的优点四、 …

深入浅出设计模式 - 建造者模式

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…

fatal: not a git repository (or any of the parent directories): .git 解决方案

fatal: not a git repository (or any of the parent directories): .git致命:不是git存储库(或任何父目录):.git 解决办法&#xff1a; 在命令行 输入 git init 然后回车就好了 git init

JSON-TO-PROTOBUF

url https://json2pb.vercel.app/

PMP认证考试的价值和前景:值得投资吗?

因为我身边很多小伙伴都在纠结考个PMP证书要花小一万&#xff0c;完事到底值不值得投资这个问题&#xff1f;那咱们今的主题就是浅说一下PMP考试的价值和前景叭~ PMP的价值 1.PMP证书能够适用于很多行业&#xff0c;就业范围比较广&#xff0c;比如航天、通讯、电子、计算机、…

【雕爷学编程】Arduino动手做(132)---KY-027魔术光环模块

7款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&…

UDP套接字的通信(实现英汉互译/程序替换/多线程聊天室/Windows与Linux通信)

实现英汉互译 思路 我们在客户端发英文&#xff0c;服务端做翻译工作&#xff0c;让翻译好的中文再次发给我们的客户端&#xff0c;然后打印出来。 服务端代码 翻译的操作 创建一个txt文件里面包含英汉互译的数据 dict.txt banana:香蕉 apple:苹果 pig:猪 beef:牛肉 hello…

Liux上使用POI将Word转PDF中文字体无法显示问题解决

错误信息&#xff1a; Windows测试下载PDF没有任何问题&#xff0c;打包上传Linux服务器以后下载PDF只显示数字。 解决方法&#xff1a; 1、Word转换PDF成功但是中文显示不出都是因为字体的问题 下面的方法简单粗暴&#xff0c;但是解决了我的问题&#xff1a; a、将C:\Wind…

面试官:“你还有什么想问我的吗?”(攻略版,建议收藏系列)

面试官&#xff1a;“你还有什么想问我的吗&#xff1f;”&#xff08;攻略版&#xff0c;建议收藏系列&#xff09; 此类问题大致分为三种情形&#xff1a;部门负责人面、HR面、高层领导面。 一、部门负责人面 【判断自己的业务能力和性格特点是否与岗位匹配度高】 此时&am…

ADB usage

查看手机设备的信息 获取设备的Android版本号 adb shell getprop ro.build.version.release 获取设备的API版本号 adb shell getprop ro.build.version.sdkAdb 获得 sdk版本 adb shell getprop ro.build.version.sdk27 Adb 获得Android版本 adb shell getprop ro.build.vers…

深入了解glibc的互斥锁的加锁过程

深入了解glibc的互斥锁 互斥锁是多线程同步时常用的手段&#xff0c;使用互斥锁可以保护对共享资源的操作。共享资源也被称为临界区&#xff0c;当一个线程对一个临界区加锁后&#xff0c;其他线程就不能进入该临界区&#xff0c;直到持有临界区锁的线程释放该锁。 本文以gli…

品达通用权限系统-Day03

文章目录 1. 概述2. lombok&#xff08;编码效率工具&#xff09;2.1 lombok 简介2.2 安装lombok插件2.3 lombok常用注解2.4 lombok入门案例 3. Nacos&#xff08;服务注册和配置中心&#xff09;4. Redis&#xff08;Windows版安装及使用&#xff09; 1. 概述 本节主要讲述&a…

同城上门送酒小程序 uniapp用户端+vue/php后端+商家端+配送端源码

前端uniapp 跨平台框架 后端php vue.js框架 php7.2 mysql数据库 mysql5.6 <template> <view> <view id"mainPage" :style"{height:MainPageHeightrpx}"> <PageHome v-show"showPageinitIndex" …

序列到序列学习

将最后时刻的隐藏状态传给解码器。特定的“”表示序列开始词元&#xff0c;表示开始翻译。将此次翻译的结果作为下一次的输入&#xff0c;并将隐藏状态传递给下一时刻。最后可以拿到整个语言句子的输出。 将编码器最后一次的隐藏状态与解码器的第一次的输入&#xff0c;放在一…

工具篇9--Window 虚拟机安装

文章目录 前言一、虚拟机是什么&#xff1f;二、虚拟机安装1.下载虚拟机软件&#xff1a;2.下载centos 系统镜像&#xff1a;3.虚拟机安装&#xff1a;3.1 关闭杀毒软件&#xff1a;3.2 重启后继续安装&#xff1a;3.3 修改vm 安装的位置&#xff1a;3.4 勾掉用户体验后下一步完…

PostgreSQL Log 日志模块详解

本文讲的是操作日志&#xff0c;非 WAL 日志。 文章目录 背景日志模块原理Syslogger 核心模块日志消息通信日志轮转问题一问题二问题三问题四问题五 存在的问题刷盘性能日志轮转 参考资料 背景 PG 的日志模块是一个相对独立的模块&#xff0c;主要功能就是打印用户的操作日志以…

【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN分类预测模型

【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN多分类预测模型 一、展示效果 二、思路 在正常CNN卷积神经网络训练阶段之后&#xff0c;使用进化算法&#xff08;蜜蜂算法&#xff09;拟合深度学习权重和偏差。 本文案例数据中&#xff0c; 用深度模型进行4分类预测…

vmware安装centos将home磁盘合并至root下

使用vmware安装centos后&#xff0c;发现分的盘60G&#xff0c;其中有17G分到了home盘&#xff0c;现在想只用一个盘进行统一管理&#xff0c;于是将home盘删除掉&#xff0c;再合并到root盘下&#xff0c;这里是直接删除掉home,没有备份数据&#xff0c;步骤如下&#xff1a; …