鴻蒙開發(fā)系統(tǒng)組件詳細(xì)剖析
五、進(jìn)度條組件
進(jìn)度條也是UI開發(fā)最常用的組件之一,ArkUI開發(fā)框架提供了兩種類型的進(jìn)度條: Progress
和LoadingProgress
,前者可以精準(zhǔn)指定進(jìn)度,后者表示正在加載的狀態(tài),我們接下來對它們分別做下介紹。
5.1.Progress
5.1.1.Progress定義介紹
Progress
組件可以精確的設(shè)置當(dāng)前進(jìn)度條的進(jìn)度,它主要用在有加載進(jìn)度的場景。
Progress(options: {value: number, total?: number, type?: ProgressType})
創(chuàng)建進(jìn)度組件,用于顯示內(nèi)容加載或操作處理進(jìn)度。說明如下:
options:進(jìn)度條參數(shù)配置項,ProgressOptions
參數(shù)說明如下:
- value:表示當(dāng)前進(jìn)度,取值范圍[0, 100],當(dāng)超過 100 時無效。
- total:表示進(jìn)度條總進(jìn)度,默認(rèn)值為100。
- type、style:設(shè)置進(jìn)度條的樣式,
style
從 API 8 起使用type
代替,ProgressType
定義了以下 2 種樣式:- Linear:進(jìn)度條樣式為條形進(jìn)度條
- Eclipse:進(jìn)度條樣式為圓形進(jìn)度條
- Ring:環(huán)形進(jìn)度條
- ScaleRing:環(huán)形刻度進(jìn)度條
- Capsule:膠囊樣式進(jìn)度條
案例如下:
@Entry
@Component
struct ProgressPage {
build() {
Column(){
Progress({
value:70, //設(shè)置當(dāng)前進(jìn)度
type: ProgressType.ScaleRing //設(shè)置進(jìn)度條的樣式為環(huán)形刻度樣式
})
.size({width:150, height:150})
Progress({
value:45, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Capsule //設(shè)置進(jìn)度條的樣式為膠囊樣式
})
.size({width:150, height:60})
.margin({top:20})
Progress({
value:50, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Eclipse //設(shè)置進(jìn)度條的樣式為圓形樣式
})
.size({width:120, height:120})
.margin({top:20})
Progress({
value:45, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Linear //設(shè)置進(jìn)度條的樣式為條形樣式
})
.size({width:"90%", height:60})
.margin({top:20})
Progress({
value:45, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Ring //設(shè)置進(jìn)度條的樣式為環(huán)形樣式
})
.size({width:150, height:150})
.margin({top:20})
}
.width("100%")
.padding(20)
}
}
執(zhí)行如下:
5.1.2.Progress屬性介紹
value:設(shè)置當(dāng)前進(jìn)度值。
style:設(shè)置進(jìn)度條的樣式,樣式說明如下:
- strokeWidth:設(shè)置進(jìn)度條寬度。
- scaleCount:設(shè)置環(huán)形進(jìn)度條總刻度數(shù)。
- scaleWidth:設(shè)置環(huán)形進(jìn)度條刻度粗細(xì)。
color:設(shè)置進(jìn)度條的顏色,默認(rèn)為藍(lán)色。
樣式設(shè)置案例如下:
@Entry
@Component
struct ProgressPage {
build() {
Column(){
Progress({
value:70, //設(shè)置當(dāng)前進(jìn)度
type: ProgressType.ScaleRing //設(shè)置進(jìn)度條的樣式為環(huán)形刻度樣式
})
.size({width:150, height:150})
.style({
scaleCount:20, //設(shè)置環(huán)形進(jìn)度條刻度梳理
scaleWidth:10 //設(shè)置環(huán)形進(jìn)度條刻度粗細(xì)
})
.color(Color.Red) //設(shè)置顏色
Progress({
value:45, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Capsule //設(shè)置進(jìn)度條的樣式為膠囊樣式
})
.size({width:150, height:60})
.margin({top:20})
.color("#6495ED") //設(shè)置顏色
Progress({
value:50, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Eclipse //設(shè)置進(jìn)度條的樣式為圓形樣式
})
.size({width:120, height:120})
.margin({top:20})
Progress({
value:45, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Linear //設(shè)置進(jìn)度條的樣式為條形樣式
})
.size({width:"90%", height:60})
.margin({top:20})
.style({strokeWidth:30}) //設(shè)置進(jìn)度條線條寬度
Progress({
value:45, //設(shè)置當(dāng)前進(jìn)度
total:100, //設(shè)置進(jìn)度總量
type: ProgressType.Ring //設(shè)置進(jìn)度條的樣式為環(huán)形樣式
})
.size({width:150, height:150})
.margin({top:20})
.style({strokeWidth:20}) //設(shè)置進(jìn)度條線條寬度
}
.width("100%")
.padding(20)
}
}
預(yù)覽效果如下:
5.2.LoadingProgress
LoadingProgress
和 Progress
的區(qū)別是不能精確指定進(jìn)度條的進(jìn)度,它是一個一直加載的動畫,主要是向用戶提示任務(wù)正在運行中。
5.2.1:LoadingProgress定義
LoadingProgress()
創(chuàng)建加載進(jìn)展組件。LoadingProgress
沒有定義任何參數(shù)。案例如下:
LoadingProgress().width(180).height(180)
預(yù)覽后結(jié)果如下:
5.2.2.LoadingProgress屬性介紹
只有一個屬性:
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
color | ResourceColor | 設(shè)置加載進(jìn)度條前景色。從API version 9開始,該接口支持在ArkTS卡片中使用。 |
案例如下:
@Entry
@Component
struct ProgressPage02 {
@State intervalID:number = 0;
@State value:number = 0;
build() {
Column(){
LoadingProgress()
.width(180)
.height(180)
.color("#4B0082") //設(shè)置進(jìn)度條的前景顏色
}
.width("100%")
.padding(20)
}
}
預(yù)覽后效果如下:
六、選擇器組件
ArkUI開發(fā)框架提供了一系列比較常用的選擇器,比如文本選擇器 TextPicker
、時間選擇器 TimePicker
以及日期選擇器 DatePicker
6.1.TimePicker
TimePicker
是選擇時間的滑動選擇器組件,默認(rèn)以 00:00 至 23:59 的時間區(qū)創(chuàng)建滑動選擇器。
6.1.1:TimePicker定義
接口:默認(rèn)以24小時的時間區(qū)間創(chuàng)建滑動選擇器
TimePicker(options?: {selected?: Date})
options:創(chuàng)建時間選擇器的可選配置參數(shù), TimePickerOptions
說明如下:
- selected:設(shè)置選擇器的默認(rèn)選中時間。
參數(shù):
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
selected | Date | 否 | 設(shè)置選中項的時間。默認(rèn)值:當(dāng)前系統(tǒng)時間 |
案例如下所示:
@Entry
@Component
struct TimePickerPage{
build() {
Column(){
TimePicker({selected: new Date()}) //設(shè)置默認(rèn)當(dāng)前事件
.width(200)
.height(150)
.backgroundColor("#40E0D0")
}
.width("100%")
.padding(20)
}
}
預(yù)覽結(jié)果如下:
6.1.2.TimePicker屬性介紹
除支持通用屬性外,還支持以下屬性:
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
useMilitaryTime | boolean | 展示時間是否為24小時制,不支持動態(tài)修改。默認(rèn)值:false |
除支持通用事件外,還支持以下事件:
名稱 | 功能描述 |
---|---|
onChange(callback: (value: TimePickerResult ) => void) | 選擇時間時觸發(fā)該事件。 |
案例如下:
@Entry
@Component
struct TimePickerPage{
@State isMilitaryTime:boolean = true //默認(rèn)狀態(tài)為true
@State selectedTime:Date = new Date('1998-07-27T08:00:00')
build() {
Column(){ // 創(chuàng)建一個垂直布局的列
Button('切換:12小時制/24小時制') // 創(chuàng)建一個按鈕,顯示文本為“切換:12小時制/24小時制”
.margin({top:30,bottom:30}) // 設(shè)置按鈕的上下外邊距為30
.onClick(()=>{ // 監(jiān)聽按鈕的點擊事件
//點擊一次就取反,以此來控制切換
this.isMilitaryTime = !this.isMilitaryTime; // 點擊按鈕時切換 isMilitaryTime 狀態(tài)變量的值
})
TimePicker({selected:this.selectedTime}) // 創(chuàng)建一個時間選擇器,設(shè)置默認(rèn)選中時間為 this.selectedTime
.useMilitaryTime(this.isMilitaryTime) // 根據(jù) isMilitaryTime 狀態(tài)變量切換時間制(12小時制或24小時制)
.onChange((value:TimePickerResult)=>{ // 監(jiān)聽時間選擇器數(shù)值變化事件
//設(shè)置小時,單位:分鐘
this.selectedTime.setHours(value.hour, value.minute); // 根據(jù)選擇的時間設(shè)置 this.selectedTime 的小時和分鐘
console.info('select current date is:'+JSON.stringify(value)); // 在控制臺輸出選擇的時間信息
})
}
.width("100%")
.padding(20)
}
}
預(yù)覽效果如下:
6.2.DatePicker
DatePicker
是選擇日期的滑動選擇器組件,默認(rèn)以 1970-1-1 至 2100-12-31 的日期區(qū)間創(chuàng)建滑動選擇器。
6.2.1.DatePicker定義
接口:
DatePicker(options?: {start?: Date, end?: Date, selected?: Date})
上面的接口可以根據(jù)指定范圍的Date創(chuàng)建可以選擇日期的滑動選擇器,參數(shù):
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
start | Date | 否 | 指定選擇器的起始日期。默認(rèn)值:Date(‘1970-1-1’) |
end | Date | 否 | 指定選擇器的結(jié)束日期。默認(rèn)值:Date(‘2100-12-31’) |
selected | Date | 否 | 設(shè)置選中項的日期。默認(rèn)值:當(dāng)前系統(tǒng)日期 |
案例如下:
@Entry
@Component
struct DatePickPage{
@State isMilitaryTime:boolean = true //默認(rèn)狀態(tài)為true
@State selectedTime:Date = new Date('1998-07-27T08:00:00')
build() {
Column(){ // 創(chuàng)建一個垂直布局的列
DatePicker({
start:new Date("2012-1-1"), // 設(shè)置開始時間
end:new Date("2032-1-1") // 設(shè)置結(jié)束時間
})
.width(255)
.height(120)
.backgroundColor("#AFEEEE")
}
.width("100%")
.padding(20)
}
}
執(zhí)行后效果如下:
6.2.2:DatePicker屬性介紹
除支持通用屬性外,還支持以下屬性:
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
lunar | boolean | 日期是否顯示農(nóng)歷。- true:展示農(nóng)歷。- false:不展示農(nóng)歷。默認(rèn)值:false |
案例如下所示:
@Entry
@Component
struct DatePickPage{
build() {
Column(){ // 創(chuàng)建一個垂直布局的列
DatePicker({
start:new Date("2012-1-1"), // 設(shè)置開始時間
end:new Date("2032-1-1") // 設(shè)置結(jié)束時間
})
.lunar(true) //設(shè)置顯示農(nóng)歷
.width(255)
.height(120)
.backgroundColor("#AFEEEE")
}
.width("100%")
.padding(20)
}
}
預(yù)覽效果如下:
6.2.3:DatePicker事件介紹
除支持通用事件外,還支持以下事件:
名稱 | 功能描述 |
---|---|
onChange(callback: (value: DatePickerResult) => void) | 選擇日期時觸發(fā)該事件。 |
DatePickerResult對象說明:
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
year | number | 選中日期的年。 |
month | number | 選中日期的月(0~11),0表示1月,11表示12月。 |
day | number | 選中日期的日 |
案例如下:點擊按鈕可以切換農(nóng)歷和公歷
@Entry
@Component
struct DatePickPage02{
@State isLunar:boolean = false //默認(rèn)狀態(tài)為true
@State selectedDate:Date = new Date('1998-07-27T08:00:00')
build() {
Column(){ // 創(chuàng)建一個垂直布局的列
Button("切換公歷/農(nóng)歷") // 創(chuàng)建一個按鈕,顯示文本為“切換公歷/農(nóng)歷”
.margin({top:30,bottom:30}) // 設(shè)置按鈕的上下外邊距為30
.onClick(()=>{ // 監(jiān)聽按鈕的點擊事件
this.isLunar = !this.isLunar; // 點擊按鈕時切換 isLunar 狀態(tài)變量的值
})
DatePicker({ // 創(chuàng)建一個日期選擇器
start: new Date('1970-1-1'), // 設(shè)置起始日期為1970年1月1日
end: new Date('2099-1-1'), // 設(shè)置結(jié)束日期為2099年1月1日
selected: this.selectedDate // 設(shè)置默認(rèn)選中日期為 this.selectedDate
})
.lunar(this.isLunar) // 根據(jù) isLunar 狀態(tài)變量切換日期顯示為公歷或農(nóng)歷
.onChange((value:DatePickerResult)=>{ // 監(jiān)聽日期選擇器數(shù)值變化事件
this.selectedDate.setFullYear(value.year, value.month, value.day); // 根據(jù)選擇的日期設(shè)置 this.selectedDate 的年、月、日,切換過去就是之前選擇的時間
console.info('select current date is: '+JSON.stringify(value)); // 在控制臺輸出選擇的日期信息
})
}
.width("100%")
.padding(20)
}
}
預(yù)覽效果如下:
七、二維碼組件
二維碼的使用場景,比如掃碼添加好友,掃碼騎車,掃碼支付等等,ArkUI開發(fā)框架提供了 RQCode
組件生成一個二維碼。
接口:
QRCode(value: string)
參數(shù):
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
value | string | 是 | 二維碼內(nèi)容字符串。最大支持256個字符,若超出,則截取前256個字符。說明:該字符串內(nèi)容確保有效,不支持null、undefined以及空內(nèi)容。 |
屬性
除支持通用屬性外,還支持以下屬性。
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
color | ResourceColor | 設(shè)置二維碼顏色。默認(rèn)值:Color.Black從API version 9開始,該接口支持在ArkTS卡片中使用。 |
backgroundColor | ResourceColor | 設(shè)置二維碼背景顏色。默認(rèn)值:Color.White從API version 9開始,該接口支持在ArkTS卡片中使用。 |
案例如下:
@Entry
@Component
struct QRCodePage {
@State value: string = "念去去,千里煙波暮靄程程楚天闊";
build() {
Column({space:5}){
Text("不帶顏色")
.fontSize(25)
.width("90%")
.fontColor("#696969")
.fontWeight(FontWeight.Bold)
.textAlign(TextAlign.Center)
QRCode(this.value).width(200).height(200)
Text("設(shè)置二維碼顏色")
.fontSize(25)
.width("90%")
.fontColor("#696969")
.fontWeight(FontWeight.Bold)
.textAlign(TextAlign.Center)
QRCode(this.value).width(200).height(200).color("#F08080")
Text("設(shè)置二維碼顏色和背景顏色")
.fontSize(25)
.width("90%")
.fontColor("#696969")
.fontWeight(FontWeight.Bold)
.textAlign(TextAlign.Center)
QRCode(this.value).width(200).height(200).color("#F08080").backgroundColor("#D3D3D3")
}.width("100%").margin({top:10})
}
}
設(shè)置后如下:
八、開關(guān)組件
ArkUI開發(fā)框架 Toggle
組件提供勾選框樣式、狀態(tài)按鈕樣式及開關(guān)樣式。
子組件:僅當(dāng)ToggleType為Button時可包含子組件。
8.1.Toggle定義
接口
Toggle(options: { type: ToggleType, isOn?: boolean })
參數(shù):
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
type | ToggleType | 是 | 開關(guān)的樣式。 |
isOn | boolean | 否 | 開關(guān)是否打開,true:打開,false:關(guān)閉。默認(rèn)值:false |
ToggleType枚舉說明,從API version 9開始,該接口支持在ArkTS卡片中使用。
名稱 | 描述 |
---|---|
Checkbox | 提供單選框樣式。說明:通用屬性margin的默認(rèn)值為:{top: 12 vp,right: 12 vp,bottom: 12 vp,left: 12 vp} |
Button | 提供狀態(tài)按鈕樣式,如果子組件有文本設(shè)置,則相應(yīng)的文本內(nèi)容會顯示在按鈕內(nèi)部。 |
Switch | 提供開關(guān)樣式。說明:通用屬性margin的默認(rèn)值為:{top: 14 vp,right: 6 vp,bottom: 6 vp,left: 14 vp} |
按鈕樣式案例如下:
@Entry
@Component
struct TogglePage {
build() {
Column({space:20}){
Row(){
Text("開關(guān)樣式:").fontWeight(FontWeight.Bold).fontSize(25)
Toggle({type:ToggleType.Switch}).width(30)
}
.width("100%")
.justifyContent(FlexAlign.Center)
Row(){
Text("單選框樣式:").fontWeight(FontWeight.Bold).fontSize(25)
Toggle({type:ToggleType.Checkbox}).width(30)
}
.width("100%")
.justifyContent(FlexAlign.Center)
//按鈕樣式
Row(){
Toggle({type:ToggleType.Button}){
Text("注冊").fontSize(30)
}.width("80%").height(50)
}
.width("100%")
.justifyContent(FlexAlign.Center)
}
.width("100%")
.padding({top:20})
}
}
執(zhí)行后如下:
8.2.Toggle屬性介紹
除支持通用屬性外,還支持以下屬性:
名稱 | 參數(shù) | 參數(shù)描述 |
---|---|---|
selectedColor | ResourceColor | 設(shè)置組件打開狀態(tài)的背景顏色。從API version 9開始,該接口支持在ArkTS卡片中使用。 |
switchPointColor | ResourceColor | 設(shè)置Switch類型的圓形滑塊顏色。說明:僅對type為ToggleType.Switch生效。從API version 9開始,該接口支持在ArkTS卡片中使用。 |
修改之前的代碼,設(shè)置按鈕的顏色如下:
@Entry
@Component
struct TogglePage {
build() {
Column({space:20}){
Row(){
Text("開關(guān)樣式:").fontWeight(FontWeight.Bold).fontSize(25)
Toggle({type:ToggleType.Switch})
.selectedColor("#6495ED") //設(shè)置組件打開狀態(tài)的背景顏色為藍(lán)色
.switchPointColor("#A9A9A9") //設(shè)置type是Switch的圓形滑塊顏色為灰色
}
.width("100%")
.justifyContent(FlexAlign.Center)
Row(){
Text("單選框樣式:").fontWeight(FontWeight.Bold).fontSize(25)
Toggle({type:ToggleType.Checkbox})
.width(30)
.selectedColor("#6495ED") //設(shè)置組件打開狀態(tài)的背景顏色為藍(lán)色
.switchPointColor("#A9A9A9") //設(shè)置type是Switch的圓形滑塊顏色為灰色
}
.width("100%")
.justifyContent(FlexAlign.Center)
//按鈕樣式
Row(){
Toggle({type:ToggleType.Button}){
Text("注冊").fontSize(30)
}
.width("80%")
.height(50)
.selectedColor("#6495ED") //設(shè)置組件打開狀態(tài)的背景顏色為藍(lán)色
.switchPointColor("#A9A9A9") //設(shè)置type是Switch的圓形滑塊顏色為灰色
}
.width("100%")
.justifyContent(FlexAlign.Center)
}
.width("100%")
.padding({top:20})
}
}
執(zhí)行后如下:文章來源:http://www.zghlxwxcb.cn/news/detail-791198.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-791198.html
到了這里,關(guān)于【HarmonyOS4.0】第七篇-ArkUI系統(tǒng)組件(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!