Slider
滑動(dòng)條組件,通常用于快速調(diào)節(jié)設(shè)置值,如音量調(diào)節(jié)、亮度調(diào)節(jié)等應(yīng)用場(chǎng)景。
說明:
開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
該組件從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。
子組件
無(wú)
接口
Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direction?: Axis, reverse?: boolean})
從API version 9開始,該接口支持在ArkTS卡片中使用。
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
value | number | 否 | 當(dāng)前進(jìn)度值。 默認(rèn)值:參數(shù)min 從API version 10開始,該參數(shù)支持[$$]雙向綁定變量。 |
min | number | 否 | 設(shè)置最小值。 默認(rèn)值:0 |
max | number | 否 | 設(shè)置最大值。 默認(rèn)值:100**說明:**min >= max異常情況,min取默認(rèn)值0,max取默認(rèn)值100。 value不在[min, max]范圍之內(nèi),取min/max,靠近min取min,靠近max取max。 |
step | number | 否 | 設(shè)置Slider滑動(dòng)步長(zhǎng)。 默認(rèn)值:1 取值范圍:[0.01, max]**說明:**設(shè)置小于0或百分比的值時(shí),按默認(rèn)值顯示。 |
style | [SliderStyle] | 否 | 設(shè)置Slider的滑塊與滑軌顯示樣式。 默認(rèn)值:SliderStyle.OutSet |
direction8+ | [Axis] | 否 | 設(shè)置滑動(dòng)條滑動(dòng)方向?yàn)樗交蜇Q直方向。 默認(rèn)值:Axis.Horizontal |
reverse8+ | boolean | 否 | 設(shè)置滑動(dòng)條取值范圍是否反向,橫向Slider默認(rèn)為從左往右滑動(dòng),豎向Slider默認(rèn)為從上往下滑動(dòng)。 默認(rèn)值:false |
SliderStyle枚舉說明
從API version 9開始,該接口支持在ArkTS卡片中使用。
名稱 | 描述 |
---|---|
OutSet | 滑塊在滑軌上。 |
InSet | 滑塊在滑軌內(nèi)。 |
屬性
支持除觸摸熱區(qū)以外的通用屬性設(shè)置。
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
blockColor | [ResourceColor] | 設(shè)置滑塊的顏色。 從API version 9開始,該接口支持在ArkTS卡片中使用。**說明:**當(dāng)滑塊形狀設(shè)置為SliderBlockType.DEFAULT 時(shí),blockColor 可設(shè)置默認(rèn)圓形滑塊顏色; 當(dāng)滑塊形狀設(shè)置為SliderBlockType.IMAGE 時(shí),滑塊無(wú)填充,設(shè)置blockColor 不生效; 當(dāng)滑塊形狀設(shè)置為SliderBlockType.SHAPE 時(shí),blockColor 可設(shè)置自定義形狀的填充顏色。 |
trackColor | [ResourceColor] | 設(shè)置滑軌的背景顏色。 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
selectedColor | [ResourceColor] | 設(shè)置滑軌的已滑動(dòng)部分顏色。 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
showSteps | boolean | 設(shè)置當(dāng)前是否顯示步長(zhǎng)刻度值。 默認(rèn)值:false 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
showTips | value: boolean, content10+?: [ResourceStr] | value:設(shè)置滑動(dòng)時(shí)是否顯示氣泡提示。 默認(rèn)值:false content:設(shè)置氣泡提示的文本內(nèi)容,默認(rèn)顯示當(dāng)前百分比。 從API version 9開始,該接口支持在ArkTS卡片中使用。**說明:**當(dāng)direction的值為Axis.Horizontal時(shí),tip顯示在滑塊正上方。值為Axis.Vertical時(shí),tip顯示在滑塊正左邊。 tip的繪制區(qū)域?yàn)镾lider自身節(jié)點(diǎn)的overlay。 Slider不設(shè)置邊距或者邊距比較小時(shí),tip會(huì)被截?cái)唷?/td> |
trackThickness | [Length] | 設(shè)置滑軌的粗細(xì)。 默認(rèn)值:當(dāng)參數(shù)style的值設(shè)置[SliderStyle].OutSet 時(shí)為 4.0vp,[SliderStyle].InSet時(shí)為20.0vp 從APIversion9開始,該接口支持在ArkTS卡片中使用。**說明:**設(shè)置為小于等于0的值時(shí),按默認(rèn)值顯示。 |
blockBorderColor10+ | [ResourceColor] | 設(shè)置滑塊描邊顏色。**說明:**當(dāng)滑塊形狀設(shè)置為SliderBlockType.DEFAULT 時(shí),blockBorderColor 可設(shè)置默認(rèn)圓形滑塊描邊顏色; 當(dāng)滑塊形狀設(shè)置為SliderBlockType.IMAGE 時(shí),滑塊無(wú)描邊,設(shè)置blockBorderColor 不生效; 當(dāng)滑塊形狀設(shè)置為SliderBlockType.SHAPE 時(shí),blockBorderColor 可設(shè)置自定義形狀中線的顏色。 |
blockBorderWidth10+ | [Length] | 設(shè)置滑塊描邊粗細(xì)。**說明:**當(dāng)滑塊形狀設(shè)置為SliderBlockType.DEFAULT 時(shí),blockBorderWidth 可設(shè)置默認(rèn)圓形滑塊描邊粗細(xì); 當(dāng)滑塊形狀設(shè)置為SliderBlockType.IMAGE 時(shí),滑塊無(wú)描邊,設(shè)置blockBorderWidth 不生效; 當(dāng)滑塊形狀設(shè)置為SliderBlockType.SHAPE 時(shí),blockBorderWidth 可設(shè)置自定義形狀中線的粗細(xì)。 |
stepColor10+ | [ResourceColor] | 設(shè)置刻度顏色。 |
trackBorderRadius10+ | [Length] | 設(shè)置底板圓角半徑。 |
blockSize10+ | [SizeOptions] | 設(shè)置滑塊大小。 |
blockStyle10+ | [SliderBlockStyle] | 設(shè)置滑塊形狀參數(shù)。 |
stepSize10+ | [Length] | 設(shè)置刻度大?。ㄖ睆剑?/td> |
SliderBlockStyle10+對(duì)象說明
Slider組件滑塊形狀參數(shù)。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | [SliderBlockType] | 是 | 設(shè)置滑塊形狀。 默認(rèn)值:SliderBlockType.DEFAULT,使用圓形滑塊。 |
image | [ResourceStr] | 否 | 設(shè)置滑塊圖片資源。 圖片顯示區(qū)域大小由blockSize屬性控制,請(qǐng)勿輸入尺寸過大的圖片。 |
shape | [Circle] | [Ellipse] | [Path] |
SliderBlockType10+枚舉說明
Slider組件滑塊形狀枚舉。
名稱 | 描述 |
---|---|
DEFAULT | 使用默認(rèn)滑塊(圓形)。 |
IMAGE | 使用圖片資源作為滑塊。 |
SHAPE | 使用自定義形狀作為滑塊。 |
事件
支持[通用事件]外,還支持以下事件:
名稱 | 功能描述 |
---|---|
onChange(callback: (value: number, mode: SliderChangeMode) => void) | Slider拖動(dòng)或點(diǎn)擊時(shí)觸發(fā)事件回調(diào)。 value:當(dāng)前滑動(dòng)進(jìn)度值。若返回值有小數(shù),可使用number.toFixed()方法將數(shù)據(jù)處理為預(yù)期的精度。 mode:事件觸發(fā)的相關(guān)狀態(tài)值。 從API version 9開始,該接口支持在ArkTS卡片中使用。**說明:**Begin和End狀態(tài)當(dāng)手勢(shì)點(diǎn)擊時(shí)都會(huì)觸發(fā),Moving和Click狀態(tài)當(dāng)value值發(fā)生變化時(shí)觸發(fā)。 當(dāng)連貫動(dòng)作為拖動(dòng)動(dòng)作時(shí),不觸發(fā)Click狀態(tài)。 value值的變化范圍為對(duì)應(yīng)步長(zhǎng)steps數(shù)組。 |
SliderChangeMode枚舉說明
從API version 9開始,該接口支持在ArkTS卡片中使用。
名稱 | 值 | 描述 |
---|---|---|
Begin | 0 | 手勢(shì)/鼠標(biāo)接觸或者按下滑塊。 |
Moving | 1 | 正在拖動(dòng)滑塊過程中。 |
End | 2 | 手勢(shì)/鼠標(biāo)離開滑塊。 |
Click | 3 | 點(diǎn)擊滑動(dòng)條使滑塊位置移動(dòng)。HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
示例
示例1
// xxx.ets
@Entry
@Component
struct SliderExample {
@State outSetValueOne: number = 40
@State inSetValueOne: number = 40
@State outSetValueTwo: number = 40
@State inSetValueTwo: number = 40
@State vOutSetValueOne: number = 40
@State vInSetValueOne: number = 40
@State vOutSetValueTwo: number = 40
@State vInSetValueTwo: number = 40
build() {
Column({ space: 8 }) {
Text('outset slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
Row() {
Slider({
value: this.outSetValueOne,
min: 0,
max: 100,
style: SliderStyle.OutSet
})
.showTips(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.outSetValueOne = value
console.info('value:' + value + 'mode:' + mode.toString())
})
// toFixed(0)將滑動(dòng)條返回值處理為整數(shù)精度
Text(this.outSetValueOne.toFixed(0)).fontSize(12)
}
.width('80%')
Row() {
Slider({
value: this.outSetValueTwo,
step: 10,
style: SliderStyle.OutSet
})
.showSteps(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.outSetValueTwo = value
console.info('value:' + value + 'mode:' + mode.toString())
})
Text(this.outSetValueTwo.toFixed(0)).fontSize(12)
}
.width('80%')
Text('inset slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
Row() {
Slider({
value: this.inSetValueOne,
min: 0,
max: 100,
style: SliderStyle.InSet
})
.blockColor('#191970')
.trackColor('#ADD8E6')
.selectedColor('#4169E1')
.showTips(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.inSetValueOne = value
console.info('value:' + value + 'mode:' + mode.toString())
})
Text(this.inSetValueOne.toFixed(0)).fontSize(12)
}
.width('80%')
Row() {
Slider({
value: this.inSetValueTwo,
step: 10,
style: SliderStyle.InSet
})
.blockColor('#191970')
.trackColor('#ADD8E6')
.selectedColor('#4169E1')
.showSteps(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.inSetValueTwo = value
console.info('value:' + value + 'mode:' + mode.toString())
})
Text(this.inSetValueTwo.toFixed(0)).fontSize(12)
}
.width('80%')
Row() {
Column() {
Text('vertical outset slider').fontSize(9).fontColor(0xCCCCCC).width('50%').margin(15)
Row() {
Slider({
value: this.vOutSetValueOne,
style: SliderStyle.OutSet,
direction: Axis.Vertical
})
.blockColor('#191970')
.trackColor('#ADD8E6')
.selectedColor('#4169E1')
.showTips(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.vOutSetValueOne = value
console.info('value:' + value + 'mode:' + mode.toString())
})
Slider({
value: this.vOutSetValueTwo,
step: 10,
style: SliderStyle.OutSet,
direction: Axis.Vertical
})
.blockColor('#191970')
.trackColor('#ADD8E6')
.selectedColor('#4169E1')
.showSteps(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.vOutSetValueTwo = value
console.info('value:' + value + 'mode:' + mode.toString())
})
}
}.width('50%').height(300)
Column() {
Text('vertical inset slider').fontSize(9).fontColor(0xCCCCCC).width('50%').margin(15)
Row() {
Slider({
value: this.vInSetValueOne,
style: SliderStyle.InSet,
direction: Axis.Vertical,
reverse: true // 豎向的Slider默認(rèn)是上端是min值,下端是max值,因此想要從下往上滑動(dòng),需要設(shè)置reverse為true
})
.showTips(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.vInSetValueOne = value
console.info('value:' + value + 'mode:' + mode.toString())
})
Slider({
value: this.vInSetValueTwo,
step: 10,
style: SliderStyle.InSet,
direction: Axis.Vertical,
reverse: true
})
.showSteps(true)
.onChange((value: number, mode: SliderChangeMode) = > {
this.vInSetValueTwo = value
console.info('value:' + value + 'mode:' + mode.toString())
})
}
}.width('50%').height(300)
}
}.width('100%')
}
}
示例2
@Entry
@Component
struct SliderExample {
@State tipsValue: number = 40
build() {
Column({ space: 8 }) {
Text('block').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
Slider({ style: SliderStyle.OutSet, value: 40 })
.blockSize({ width: 40, height: 40 })
.blockBorderColor(Color.Red)
.blockBorderWidth(5)
Divider()
Text('step').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
Slider({ style: SliderStyle.InSet, value: 40, step: 10 })
.showSteps(true)
.stepSize(8)
.stepColor(Color.Yellow)
Divider()
Text('track').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
Slider({ style: SliderStyle.InSet, value: 40 })
.trackBorderRadius(2)
Divider()
Text('blockStyle').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
Slider({ style: SliderStyle.OutSet, value: 40 })
.blockStyle({ type: SliderBlockType.DEFAULT })
Slider({ style: SliderStyle.OutSet, value: 40 })
.blockStyle({ type: SliderBlockType.IMAGE, image: $r('sys.media.ohos_app_icon') })
Slider({ style: SliderStyle.OutSet, value: 40 })
.blockSize({ width: '60px', height: '60px' })
.blockColor(Color.Red)
.blockStyle({ type: SliderBlockType.SHAPE, shape: new Path({ commands: 'M60 60 M30 30 L15 56 L45 56 Z' }) })
Divider()
Text('tips').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')
Slider({ style: SliderStyle.InSet, value: this.tipsValue })
.showTips(true, 'value:' + this.tipsValue.toFixed())
.onChange(value = > {
this.tipsValue = value
})
}
}
}
審核編輯 黃宇
-
組件
+關(guān)注
關(guān)注
1文章
512瀏覽量
17839 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2358瀏覽量
42876
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論