大家好,我是潘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。该属性可用于LinearRingScaleRing三种类型,效果如下

  • 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的更多相关文章

  1. 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf

    <ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...

  2. Python项目案例开发从入门到实战 - 书籍信息

    Python项目案例开发从入门到实战 - 爬虫.游戏和机器学习(微课版) 作者:郑秋生 夏敏捷 清华大学出版社 ISBN:978-7-302-45970-5

  3. asp.net core跨平台开发从入门到实战文摘

    第1章 .NET Core 第2章 dotnet命令 第3章 VS Code安装及介绍 第4章 VS2015开发.NET Core 第5章 ASP.NET Core 第6章 EF Core 第7章 A ...

  4. Python项目案例开发从入门到实战-1.4Python图形界面设计

    Python提供了多个图形开发界面的库,常用的Python GUI库如下. -Tkinter:Python内置模块 -wxPython -Jython 1.4.1创建Windows窗口 import ...

  5. Python项目案例开发从入门到实战-1.5Python文件的使用

    Python对文件的操作通常按照三个步骤进行: un 使用open()函数打开(或建立)文件,并返回一个file对象. deux 使用file对象的读写方法对文件进行读写操作. trois 使用fil ...

  6. Python项目案例开发从入门到实战-1.3 Python面向对象设计

    1.3.1定义于使用类 类的定义 class class_name: attribute function 例: class Person: age=18 def say(): print(" ...

  7. Python项目案例开发从入门到实战-1.2 Python语法基础

    书籍信息 1.2 Python语法基础 1.2.1 Python数据类型 数值类型 整型(int):浮点型(float):复数(complex),以j或J结尾,如2+3j 字符串 布尔类型 空值,用N ...

  8. Transform组件C#游戏开发快速入门

    Transform组件C#游戏开发快速入门大学霸 组件(Component)可以看作是一类属性的总称.而属性是指游戏对象上一切可设置.调节的选项,如图2-8所示.本文选自C#游戏开发快速入门大学霸   ...

  9. BDD敏捷开发入门与实战

    BDD敏捷开发入门与实战 1.BDD的来由 2003年,Dan North首先提出了BDD的概念,并在随后开发出了JBehave框架.在Dan North博客上介绍BDD的文章中,说到了BDD的想法是 ...

  10. Ionic 入门与实战之第二章第一节:Ionic 环境搭建之开发环境配置

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第一节,主要对 Ionic 的开发环境配置做了简要的介绍,本文介绍的开发环境为 Mac 系统,Windows 系统基本类似,少许 ...

随机推荐

  1. MathQuill

    前言 跟 MathJax.KaTex 不同,mathquill 是一个真正意义上的公式编辑器. 一边输入一边渲染,输出可以是 Tex,但是对于复杂的公式,这种输入方式还是有很大的局限性,输入过程还是需 ...

  2. Codeforces Round #710 (Div. 3) ABCDE 题解

    A. Strange Table 签到题,算出对应行列即可. view code #include<iostream> #include<string> #include< ...

  3. 匈牙利算法C++实现

    简介 一般场景是男生和女生配对的问题,现有男生要去配对如果想去配对的女生已经有喜欢的男生了,那就让想去配对的女生已经喜欢的男生挪挪位置,看看想去配对的女生已经喜欢的男生能不能喜欢其他人,给现有配对的男 ...

  4. 程序员Git工作必备命令

    1.基础配置 #设置用户名 git config --global user.name"你的名字" #设置邮箱 git config --global user.email &qu ...

  5. 抛开官方库,手撸一个轻量级 MCP 服务端

    大家好!在昨天的文章 <官方文档没告诉你的:通过抓包,深入揭秘MCP协议底层通信> 中,我们通过Fiddler工具,像侦探一样,一步步揭开了MCP(Model Context Protoc ...

  6. Linux 错误: $'\r': command not found --九五小庞

    前段时间写脚本出现了$'\r': command not found问题 其实log报错已经非常明确了,是linux无法解析$'\r'.这其实是windows与linux系统的差异导致的. 因为lin ...

  7. 修改xampp中的mysql的密码报错,ERROR 1348 (HY000): Column 'Password' is not updatable --九五小庞

    xampp中的mysql(MariaDB)默认密码为空,进入mysql的bin目录,输入mysql -u root -p,回车,无密码登录: 查看所有数据库,选择mysql数据库: show data ...

  8. U盘无法使用的修复方法-九五小庞

    步骤一,下载USBoot USBoot 是一款可以将手中的U盘制作成启动盘的工具,程序自带了MSDOS7.1的两个基本启动文件IO.SYS和COMMAND,如果要制作复杂的启动盘,可以把其他文件拷贝到 ...

  9. 高阶篇:1.4)TRIZ创新算法

    本章目的:掌握最基础的ARIZ-71的矛盾矩阵的运用 1.TRIZ概论 Triz,发明问题解决理论的拉丁文翻译的首字母缩写,由苏联发明家根里奇*阿奇舒勒于1946年开始,每年动用1500人的人力,在研 ...

  10. echarts 案例大全(传送门)

    传送门一: http://ppchart.com/#/ 传送门二: http://analysis.datains.cn/finance-admin/index.html#/chartLib/all ...