当前位置: 首页 > news >正文

Android Jetpack Compose - 进度指示器、SegmentedButton、Chip

一、进度指示器

1、基本介绍
  1. 进度指示器可以分为 2 种类型
类型说明
确定型准确显示已完成的进度
不确定型持续动画显示,不考虑进度
  1. 进度指示器可以采用 2 种形式
类型说明
线性从左向右填充的水平条
圆形笔画长度不断增加,直到覆盖整个圆周的圆
2、基本使用
varcurrentProgressbyremember{mutableFloatStateOf(0f)}varloadingbyremember{mutableStateOf(false)}valscope=rememberCoroutineScope()Column(verticalArrangement=Arrangement.spacedBy(12.dp),horizontalAlignment=Alignment.CenterHorizontally,modifier=Modifier.fillMaxWidth().padding(12.dp)){Button(onClick={scope.launch{loading=truefor(iin0..100){delay(100)currentProgress=i.toFloat()/100}loading=false}},enabled=!loading){Text("开始加载")}if(loading){LinearProgressIndicator(progress={currentProgress},modifier=Modifier.fillMaxWidth(),)}}
varcurrentProgressbyremember{mutableFloatStateOf(0f)}varloadingbyremember{mutableStateOf(false)}valscope=rememberCoroutineScope()Column(verticalArrangement=Arrangement.spacedBy(12.dp),horizontalAlignment=Alignment.CenterHorizontally,modifier=Modifier.fillMaxWidth().padding(12.dp)){Button(onClick={scope.launch{loading=truefor(iin0..100){delay(100)currentProgress=i.toFloat()/100}loading=false}},enabled=!loading){Text("开始加载")}if(loading){CircularProgressIndicator(progress={currentProgress},)}}
3、不确定型进度指示器
  1. 不确定型通过动画向用户指示正在进行处理,但不会指定任何完成程度

  2. LinearProgressIndicator 或 CircularProgressIndicator 都可以创建为不确定指示器,但不传入 progress 参数

varloadingbyremember{mutableStateOf(false)}valscope=rememberCoroutineScope()Column(verticalArrangement=Arrangement.spacedBy(12.dp),horizontalAlignment=Alignment.CenterHorizontally,modifier=Modifier.fillMaxWidth().padding(12.dp)){Button(onClick={scope.launch{loading=truefor(iin0..100){delay(100)}loading=false}},enabled=!loading){Text("开始加载")}if(loading){LinearProgressIndicator(modifier=Modifier.fillMaxWidth(),)}}
varloadingbyremember{mutableStateOf(false)}valscope=rememberCoroutineScope()Column(verticalArrangement=Arrangement.spacedBy(12.dp),horizontalAlignment=Alignment.CenterHorizontally,modifier=Modifier.fillMaxWidth().padding(12.dp)){Button(onClick={scope.launch{loading=truefor(iin0..100){delay(100)}loading=false}},enabled=!loading){Text("开始加载")}if(loading){CircularProgressIndicator()}}

二、SegmentedButton

1、基本介绍
  • SegmentedButton,即分段按钮,它可让用户从一组并排显示的选项中进行选择, SegmentedButton 有 2 种类型
  1. 单选按钮:可让用户选择一个选项

  2. 多选按钮:可让用户选择 2 到 5 个选项,对于更复杂的选择或超过 5 个选项,可以使用使用 Chip

2、演示
varselectedIndexbyremember{mutableIntStateOf(0)}valoptions=listOf("Day","Month","Week")Box(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center,){SingleChoiceSegmentedButtonRow{options.forEachIndexed{index,label->SegmentedButton(shape=SegmentedButtonDefaults.itemShape(index=index,count=options.size),selected=(selectedIndex==index),onClick={selectedIndex=index},label={Text(label)})}}}
valselectedOptions=remember{mutableStateListOf(false,false,false)}valoptions=listOf("Mail Outline","Call","Date Range")Box(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center,){MultiChoiceSegmentedButtonRow{options.forEachIndexed{index,label->SegmentedButton(shape=SegmentedButtonDefaults.itemShape(index=index,count=options.size),checked=selectedOptions[index],onCheckedChange={selectedOptions[index]=it},label={when(label){"Mail Outline"->Icon(imageVector=Icons.Default.MailOutline,contentDescription="Mail Outline")"Call"->Icon(imageVector=Icons.Default.Call,contentDescription="Call")"Date Range"->Icon(imageVector=Icons.Default.DateRange,contentDescription="Date Range")}})}}}

三、Chip

1、基本介绍
  • Chip 是一种小型交互组件,它提供了快速、高效的交互方式,例如,操作、筛选等,Chip 有如下 4 种类型
类型说明
AssistChip辅助型 Chip,用于触发操作,带图标的操作
FilterChip筛选型 Chip,用于筛选选项,可选中 / 取消
InputChip输入型 Chip,用于实体输入,可删除的实体
SuggestionChip建议型 Chip,用于内容建议,轻量级建议
2、演示
valcontext=LocalContext.currentBox(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center){AssistChip(onClick={Toast.makeText(context,"Click Assist Chip",Toast.LENGTH_SHORT).show()},label={Text("Assist Chip")},leadingIcon={Icon(Icons.Filled.Settings,contentDescription="Icon Settings",Modifier.size(AssistChipDefaults.IconSize))})}
varselectedbyremember{mutableStateOf(false)}Box(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center){FilterChip(onClick={selected=!selected},label={Text("Filter Chip")},selected=selected,leadingIcon=if(selected){{Icon(imageVector=Icons.Filled.Done,contentDescription="Done",modifier=Modifier.size(FilterChipDefaults.IconSize))}}else{null},)}
varenabledbyremember{mutableStateOf(true)}if(!enabled)returnBox(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center){InputChip(onClick={enabled=!enabled},label={Text("Input Chip")},selected=enabled,avatar={Icon(Icons.Filled.Person,contentDescription="Localized description",Modifier.size(InputChipDefaults.AvatarSize))},trailingIcon={Icon(Icons.Default.Close,contentDescription="Localized description",Modifier.size(InputChipDefaults.AvatarSize))},)}
valcontext=LocalContext.currentBox(modifier=Modifier.fillMaxSize(),contentAlignment=Alignment.Center){SuggestionChip(onClick={Toast.makeText(context,"Click Suggestion Chip",Toast.LENGTH_SHORT).show()},label={Text("Suggestion Chip")})}
http://www.jsqmd.com/news/338382/

相关文章:

  • 高效硫基标记试剂5-FAM Maleimide,787632-00-2应用解析
  • SpringBoot资源耗尽导致IO报错:undertow和redis报错
  • 2026年冷轧钢带厂家推荐排行榜:优钢钢带/特钢钢带/精密钢带/带钢/冷轧带钢/优钢带钢/特钢带钢/精密带钢,高精度与定制化实力品牌深度解析 - 品牌企业推荐师(官方)
  • 执医面授课程哪个好?2026年面授班精选指南 - 医考机构品牌测评专家
  • Android 开发问题:Duplicate class android.support.v4.app.INotificationSideChannel...
  • bulldog
  • 基于Flask与OpenSSL的自签证书管理系统设计与实现
  • bossplayersCTF
  • 2026成都陵园代理商哪家好?高效完成成都公墓选购与安葬全流程 - 深度智识库
  • 临床执业医师网课推荐:以“阿虎王者强训班”为例的课程体验分享 - 医考机构品牌测评专家
  • 2026年扁铁厂家实力推荐榜:异形/不锈钢/冷拉/光亮/冷轧/优特钢扁铁,专业定制与卓越品质的工业优选 - 品牌企业推荐师(官方)
  • 人月神话
  • 从 0 到 1 打造可观测性体系:Java 高并发场景下的 OpenTelemetry + Jaeger + Prometheus 实战全解析
  • 全网热议!2026年防火环保板材品牌排名推荐,让生活更安心 - 睿易优选
  • 从菜鸡到_offer_到手!网络安全面试实战全攻略
  • 2026年权威机构测评榜单!宝妈该怎么选安全婴儿面霜品牌? - 资讯焦点
  • 2026职业岗位新趋势
  • 2026年公司注册服务top5优质品牌推荐:公司注册收费、公司注册材料、公司注册流程、成都代理记账公司、无地址公司注册选择指南 - 优质品牌商家
  • 2026年烟尘在线监测仪荐厂家 + 价格报价 + 选购指南 - 品牌推荐大师1
  • 计算机人才缺口500万!春招选对赛道,应届生也能拿高薪Off
  • Java SaaS Niucloud云编译全端开发框架:插件化驱动的SaaS开发新范式
  • Word文档转PPT工具全攻略
  • 公卫执医备考:精选培训机构与高效课程指南 - 医考机构品牌测评专家
  • 新《网络安全法》正式实施!这5个专业身价“暴涨”,2026高薪5大专业
  • 哪款医考APP最好用?2026年主流备考工具测评与推荐 - 医考机构品牌测评专家
  • 2026年网络安全行业新趋势:这5大方向,决定你明年的职业高薪
  • 2026网络安全法正式实施,这6个专业直通网络安全领域!
  • 万字硬核:从 3D VAE 到 DiT,深度解构 AI 视频生成的“时空建模”之殇与工程化突围
  • C++基于微服务脚手架的视频点播系统---客户端(2)
  • 2/3