鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解滑块Slider和进度条Progress组件的使用。
一、滑块Slider
1.1 概述
滑动条组件,通常用于快速调节设置值,如音量调节、亮度调节等应用场景。
1.2 参数
Slider组件的参数定义如下
Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direction?: Axis, reverse?: boolean})
从API version 9开始,该接口支持在ArkTS卡片中使用。
参数说明:
| 参数名 | 参数类型 | 必填 | 参数描述 |
|---|---|---|---|
| value | number | 否 | 当前进度值。默认值:0 |
| min | number | 否 | 设置最小值。默认值:0 |
| max | number | 否 | 设置最大值。默认值:100说明:min >= max异常情况,min取默认值0,max取默认值100。value不在[min, max]范围之内,取min/max,靠近min取min,靠近max取max。 |
| step | number | 否 | 设置Slider滑动步长。默认值:1取值范围:[0.01, max]说明:设置小于0或百分比的值时,按默认值显示。 |
| style | SliderStyle | 否 | 设置Slider的滑块与滑轨显示样式。默认值:SliderStyle.OutSet |
| direction | Axis | 否 | 设置滑动条滑动方向为水平或竖直方向。默认值:Axis.Horizontal |
| reverse | boolean | 否 | 设置滑动条取值范围是否反向,横向Slider默认为从左往右滑动,竖向Slider默认为从上往下滑动。默认值:false |
SliderStyle枚举说明
| 名称 | 描述 |
|---|---|
| OutSet | 滑块在滑轨上。 |
| InSet | 滑块在滑轨内。 |
1.3 常用属性
支持除触摸热区以外的通用属性设置。
| 名称 | 参数类型 | 描述 |
|---|---|---|
| blockColor | ResourceColor | 设置滑块的颜色。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| trackColor | ResourceColor | 设置滑轨的背景颜色。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| selectedColor | ResourceColor | 设置滑轨的已滑动部分颜色。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| showSteps | boolean | 设置当前是否显示步长刻度值。默认值:false从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| showTips | boolean | 设置滑动时是否显示百分比气泡提示。默认值:false从API version 9开始,该接口支持在ArkTS卡片中使用。说明:当direction的属性值为Axis.Horizontal时,tip显示在滑块正上方。值为Axis.Vertical时,tip显示在滑块正左边。tip的绘制区域为Slider自身节点的overlay。Slider不设置边距,或者边距比较小时,tip会被截断。 |
| trackThickness | Length | 设置滑轨的粗细。默认值:当参数style的值设置SliderStyle.OutSet 时为 4.0vp,SliderStyle.InSet时为20.0vp。从APIversion9开始,该接口支持在ArkTS卡片中使用。说明:设置为小于0的值时,按默认值显示。 |
1.4 事件
通用事件仅支持挂载卸载事件:OnAppear,OnDisAppear。
| 名称 | 功能描述 |
|---|---|
| onChange(callback: (value: number, mode: SliderChangeMode) => void) | Slider滑动时触发事件回调。value:当前滑动进度值。若返回值有小数,可使用number.toFixed()方法将数据处理为预期的精度。mode:拖动状态。从API version 9开始,该接口支持在ArkTS卡片中使用。说明:Begin和End状态当手势点击时都会触发,Moving和Click状态当value值发生变换时触发。当连贯动作为拖动动作时,不触发Click状态。value值的变化范围为对应步长steps数组。 |
SliderChangeMode枚举说明
| 名称 | 值 | 描述 |
|---|---|---|
| Begin | 0 | 手势/鼠标接触或者按下滑块。 |
| Moving | 1 | 正在拖动滑块过程中。 |
| End | 2 | 手势/鼠标离开滑块。 |
| Click | 3 | 点击滑动条使滑块位置移动。 |
1.5 案例
component目录下新建slider目录,新建SliderPage.ets文件
@Entry
@Component
struct SliderPage {
@State imgWidth: number = 10
build() {
Column({ space: 150 }) {
Slider({
min: 100,
max: 300,
value: this.imgWidth,
step: 10,
})
.width('90%')
.blockColor('#36D')
.trackThickness(5)
.showTips(true)
.onChange((value,mode)=>{
console.log(value.toString());
console.log(mode.toString());
})
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
二、进度条Progress
2.1 概述
Progress为进度条组件,用于显示各种进度。
2.2 参数
Progress组件的参数定义如下
Progress(options: {value: number, total?: number, type?: ProgressType})
- value
value属性用于设置当前进度值。
- total
total属性用于设置总值。
- type
type属性用于设置进度条类型,可通过ProgressType枚举类型进行设置,可选的枚举值如下
| 名称 | 描述 | 效果 |
|---|---|---|
ProgressType.Linear |
线性样式 | ![]() |
ProgressType.Ring |
环形无刻度样式 | ![]() |
ProgressType.Eclipse |
月食样式 | ![]() |
ProgressType.ScaleRing |
环形有刻度样式 | ![]() |
ProgressType.Capsule |
胶囊样式 | ![]() |
示例代码:
component目录下新建progress目录,新建ProgressParameter.ets文件
@Entry
@Component
struct ProgressParameter {
@State value: number = 30;
@State total: number = 100;
build() {
Column({ space: 50 }) {
Progress({ value: this.value, total: this.total, type: ProgressType.Linear })
Progress({ value: this.value, total: this.total, type: ProgressType.Ring })
Progress({ value: this.value, total: this.total, type: ProgressType.Eclipse })
Progress({ value: this.value, total: this.total, type: ProgressType.ScaleRing })
Progress({ value: this.value, total: this.total, type: ProgressType.Capsule })
.width(50)
.height(200)
//分隔线
Divider()
Row({ space: 50 }) {
Button('进度-1')
.onClick(() => {
if (this.value > 0) {
this.value--;
}
})
Button('进度+1')
.onClick(() => {
if (this.value < this.total) {
this.value++;
}
})
}
}.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
2.3 常用属性
2.3.1 进度条样式
可通过style()调整进度条的样式,例如进度条的宽度,该方法的参数类型定义如下
style({strokeWidth?: string|number|Resource,scaleCount?: number,scaleWidth?: string|number|Resource})
- strokeWidth
strokeWidth属性用于设置进度条的宽度,默认值为4vp。该属性可用于Linear、Ring、ScaleRing三种类型,效果如下

- scaleCount
scaleCount属性用于设置ScaleRing的刻度数,默认值为120。效果如下

- scaleWidth
scaleCount属性用于设置ScaleRing的刻度线的宽度,默认值为2vp。效果如下

示例代码:
在progress目录下新建ProgressAttributePage.ets文件
@Entry
@Component
// 进度条progress样式 style()
struct ProgressAttributePage {
build() {
Column({ space: 50 }) {
// strokeWidth属性用于设置进度条的宽度,默认值为4vp
// scaleCount属性用于设置ScaleRing的刻度数,默认值为120
// scaleCount属性用于设置ScaleRing的刻度线的宽度,默认值为2vp
Progress({ value: 30, total: 100, type: ProgressType.Linear })
.style({
strokeWidth: 20
})
Progress({ value: 30, total: 100, type: ProgressType.Ring })
.style({
strokeWidth: 20
})
Progress({ value: 30, total: 100, type: ProgressType.ScaleRing })
.style({
strokeWidth: 10,
scaleWidth: 3,
scaleCount: 30
})
}.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
2.3.2 进度条颜色
进度条的颜色可通过color()和backgroundColor()方法进行设置,其中color()用于设置前景色,backgroundColor()用于设置背景色,例如

示例代码:
在progress目录下新建ProgressColor.ets文件
@Entry
@Component
// 进度条progress颜色
struct ProgressColor {
build() {
Column({ space: 50 }) {
// 进度条的颜色可通过color()和backgroundColor()方法进行设置,
// 其中color()用于设置前景色,backgroundColor()用于设置背景色
Progress({ value: 30, total: 100, type: ProgressType.Linear })
.color(Color.Green)
.backgroundColor("#26008000")
Progress({ value: 30, total: 100, type: ProgressType.Ring })
.color(Color.Green)
.backgroundColor("#26008000")
Progress({ value: 30, total: 100, type: ProgressType.Eclipse })
.color(Color.Green)
.backgroundColor("#26008000")
Progress({ value: 30, total: 100, type: ProgressType.ScaleRing })
.color(Color.Green)
.backgroundColor("#26008000")
Progress({ value: 30, total: 100, type: ProgressType.Capsule })
.width(200)
.color(Color.Green)
.backgroundColor("#26008000")
}.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容,防止迷路,欢迎关注!
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress的更多相关文章
- 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
<ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...
- Python项目案例开发从入门到实战 - 书籍信息
Python项目案例开发从入门到实战 - 爬虫.游戏和机器学习(微课版) 作者:郑秋生 夏敏捷 清华大学出版社 ISBN:978-7-302-45970-5
- asp.net core跨平台开发从入门到实战文摘
第1章 .NET Core 第2章 dotnet命令 第3章 VS Code安装及介绍 第4章 VS2015开发.NET Core 第5章 ASP.NET Core 第6章 EF Core 第7章 A ...
- Python项目案例开发从入门到实战-1.4Python图形界面设计
Python提供了多个图形开发界面的库,常用的Python GUI库如下. -Tkinter:Python内置模块 -wxPython -Jython 1.4.1创建Windows窗口 import ...
- Python项目案例开发从入门到实战-1.5Python文件的使用
Python对文件的操作通常按照三个步骤进行: un 使用open()函数打开(或建立)文件,并返回一个file对象. deux 使用file对象的读写方法对文件进行读写操作. trois 使用fil ...
- Python项目案例开发从入门到实战-1.3 Python面向对象设计
1.3.1定义于使用类 类的定义 class class_name: attribute function 例: class Person: age=18 def say(): print(" ...
- Python项目案例开发从入门到实战-1.2 Python语法基础
书籍信息 1.2 Python语法基础 1.2.1 Python数据类型 数值类型 整型(int):浮点型(float):复数(complex),以j或J结尾,如2+3j 字符串 布尔类型 空值,用N ...
- Transform组件C#游戏开发快速入门
Transform组件C#游戏开发快速入门大学霸 组件(Component)可以看作是一类属性的总称.而属性是指游戏对象上一切可设置.调节的选项,如图2-8所示.本文选自C#游戏开发快速入门大学霸 ...
- BDD敏捷开发入门与实战
BDD敏捷开发入门与实战 1.BDD的来由 2003年,Dan North首先提出了BDD的概念,并在随后开发出了JBehave框架.在Dan North博客上介绍BDD的文章中,说到了BDD的想法是 ...
- Ionic 入门与实战之第二章第一节:Ionic 环境搭建之开发环境配置
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第一节,主要对 Ionic 的开发环境配置做了简要的介绍,本文介绍的开发环境为 Mac 系统,Windows 系统基本类似,少许 ...
随机推荐
- MathQuill
前言 跟 MathJax.KaTex 不同,mathquill 是一个真正意义上的公式编辑器. 一边输入一边渲染,输出可以是 Tex,但是对于复杂的公式,这种输入方式还是有很大的局限性,输入过程还是需 ...
- Codeforces Round #710 (Div. 3) ABCDE 题解
A. Strange Table 签到题,算出对应行列即可. view code #include<iostream> #include<string> #include< ...
- 匈牙利算法C++实现
简介 一般场景是男生和女生配对的问题,现有男生要去配对如果想去配对的女生已经有喜欢的男生了,那就让想去配对的女生已经喜欢的男生挪挪位置,看看想去配对的女生已经喜欢的男生能不能喜欢其他人,给现有配对的男 ...
- 程序员Git工作必备命令
1.基础配置 #设置用户名 git config --global user.name"你的名字" #设置邮箱 git config --global user.email &qu ...
- 抛开官方库,手撸一个轻量级 MCP 服务端
大家好!在昨天的文章 <官方文档没告诉你的:通过抓包,深入揭秘MCP协议底层通信> 中,我们通过Fiddler工具,像侦探一样,一步步揭开了MCP(Model Context Protoc ...
- Linux 错误: $'\r': command not found --九五小庞
前段时间写脚本出现了$'\r': command not found问题 其实log报错已经非常明确了,是linux无法解析$'\r'.这其实是windows与linux系统的差异导致的. 因为lin ...
- 修改xampp中的mysql的密码报错,ERROR 1348 (HY000): Column 'Password' is not updatable --九五小庞
xampp中的mysql(MariaDB)默认密码为空,进入mysql的bin目录,输入mysql -u root -p,回车,无密码登录: 查看所有数据库,选择mysql数据库: show data ...
- U盘无法使用的修复方法-九五小庞
步骤一,下载USBoot USBoot 是一款可以将手中的U盘制作成启动盘的工具,程序自带了MSDOS7.1的两个基本启动文件IO.SYS和COMMAND,如果要制作复杂的启动盘,可以把其他文件拷贝到 ...
- 高阶篇:1.4)TRIZ创新算法
本章目的:掌握最基础的ARIZ-71的矛盾矩阵的运用 1.TRIZ概论 Triz,发明问题解决理论的拉丁文翻译的首字母缩写,由苏联发明家根里奇*阿奇舒勒于1946年开始,每年动用1500人的人力,在研 ...
- echarts 案例大全(传送门)
传送门一: http://ppchart.com/#/ 传送门二: http://analysis.datains.cn/finance-admin/index.html#/chartLib/all ...




