鸿蒙HarmonyOS NEXT开发:LoadingProgress(基础组件)

打印 上一主题 下一主题

主题 836|帖子 836|积分 2508

LoadingProgress

用于显示加载动效的组件。
   阐明:
  该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标志该内容的起始版本。
  子组件


接口

LoadingProgress()
创建加载希望组件。
卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
属性

除支持通用属性外,还支持以下属性:
color

color(value: ResourceColor)
设置加载进度条远景致。
卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名类型必填阐明valueResourceColor是加载进度条的远景致。
默认值:
API version 10及以下:‘#99666666’
API version 11及以上:‘#ff666666’ enableLoading10+

enableLoading(value: boolean)
设置LoadingProgress动画显示或者不显示。LoadingProgress动画不显示时,该组件依旧占位。通用属性Visibility.Hidden隐藏的是包罗border、padding等整个组件范围,而enableLoading=false只隐藏LoadingProgress本身动画内容,不包罗border等。
卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名类型必填阐明valueboolean是LoadingProgress动画是否显示。
默认值:true contentModifier12+

contentModifier(modifier: ContentModifier<LoadingProgressConfiguration>)
定制LoadingProgress内容区的方法。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名类型必填阐明modifierContentModifier<LoadingProgressConfiguration>是在LoadingProgress组件上,定制内容区的方法。
modifier: 内容修改器,开发者需要自界说class实现ContentModifier接口。 事件

支持通用事件。
LoadingProgressConfiguration12+对象阐明

开发者需要自界说class实现ContentModifier接口。
参数名类型默认值阐明enableloadingbooleantrueLoadingProgress动画是否显示。
默认值:true。 示例

示例1

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct LoadingProgressExample {
  5.   build() {
  6.     Column({ space: 5 }) {
  7.       Text('Orbital LoadingProgress ').fontSize(9).fontColor(0xCCCCCC).width('90%')
  8.       LoadingProgress()
  9.         .color(Color.Blue)
  10.         .layoutWeight(1)
  11.     }.width('100%').margin({ top: 5 })
  12.   }
  13. }
  14. <strong>ts</strong>
复制代码

示例2

  1. //该示例实现了自定义LoadingProgress的功能,实现了通过按钮切换是否显示LoadingProgress。点击按钮,config.enableLoading切换为false, 不显示LoadingProgress。。
  2. // xxx.ets
  3. import hilog from '@ohos.hilog'
  4. import promptAction from '@ohos.promptAction'
  5. class MyLoadingProgressStyle implements ContentModifier<LoadingProgressConfiguration> {
  6.   enableLoading: boolean = false
  7.   constructor(enableLoading: boolean) {
  8.     this.enableLoading = enableLoading
  9.   }
  10.   applyContent(): WrappedBuilder<[LoadingProgressConfiguration]> {
  11.     return wrapBuilder(buildLoadingProgress)
  12.   }
  13. }
  14. let arr1: string[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"]
  15. let arr2: string[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
  16. @Builder
  17. function buildLoadingProgress(config: LoadingProgressConfiguration) {
  18.   Column({ space: 8 }) {
  19.     Row() {
  20.       Column() {
  21.         Circle({
  22.           width: ((config.contentModifier as MyLoadingProgressStyle).enableLoading) ? 100 : 80,
  23.           height: ((config.contentModifier as MyLoadingProgressStyle).enableLoading) ? 100 : 80
  24.         })
  25.           .fill(((config.contentModifier as MyLoadingProgressStyle).enableLoading) ? Color.Grey : 0x2577e3)
  26.       }.width('50%')
  27.       Column() {
  28.         Button('' + ((config.contentModifier as MyLoadingProgressStyle).enableLoading))
  29.           .onClick((event: ClickEvent) => {
  30.             promptAction.showToast({
  31.               message: ((config.contentModifier as MyLoadingProgressStyle).enableLoading) + ''
  32.             })
  33.           })
  34.           .fontColor(Color.White)
  35.           .backgroundColor(((config.contentModifier as MyLoadingProgressStyle).enableLoading) ? Color.Grey : 0x2577e3)
  36.       }.width('50%')
  37.     }
  38.     Row() {
  39.       Column() {
  40.         Gauge({
  41.           value: (config.contentModifier as MyLoadingProgressStyle).enableLoading?50:30, min: 11, max: 100
  42.         }) {
  43.           Column() {
  44.             Text('60')
  45.               .maxFontSize("180sp")
  46.               .minFontSize("160.0vp")
  47.               .fontWeight(FontWeight.Medium)
  48.               .fontColor("#ff182431")
  49.               .width('40%')
  50.               .height('30%')
  51.               .textAlign(TextAlign.Center)
  52.               .margin({ top: '22.2%' })
  53.               .textOverflow({ overflow: TextOverflow.Ellipsis })
  54.               .maxLines(1)
  55.           }.width('100%').height('100%')
  56.         }
  57.         .colors(((config.contentModifier as MyLoadingProgressStyle).enableLoading) ? Color.Grey : 0x2577e3)
  58.         .width(200)
  59.         .strokeWidth(18)
  60.         .padding(5)
  61.         .trackShadow({ radius: 7, offsetX: 7, offsetY: 7 })
  62.         .height(200)
  63.       }.width('100%')
  64.     }
  65.     Column() {
  66.       List({ space: 20, initialIndex: 0 }) {
  67.         ForEach(arr2, (item: string) => {
  68.           ListItem() {
  69.             Text((config.contentModifier as MyLoadingProgressStyle).enableLoading ? '' + item : Number(item) * 2 + '')
  70.               .width('100%')
  71.               .height('100%')
  72.               .fontColor((config.contentModifier as MyLoadingProgressStyle).enableLoading ? Color.White : Color.Orange)
  73.               .fontSize((config.contentModifier as MyLoadingProgressStyle).enableLoading ? 16 : 20)
  74.               .textAlign(TextAlign.Center)
  75.               .backgroundColor((config.contentModifier as MyLoadingProgressStyle).enableLoading ? Color.Grey : 0x2577e3)
  76.           }
  77.           .height(110)
  78.           .border({
  79.             width: 2,
  80.             color: Color.White
  81.           })
  82.         }, (item: string) => item)
  83.       }
  84.       .height(200)
  85.       .width('100%')
  86.       .friction(0.6)
  87.       .lanes({ minLength: (config.contentModifier as MyLoadingProgressStyle).enableLoading?40:80, maxLength: (config.contentModifier as MyLoadingProgressStyle).enableLoading?40:80 })
  88.       .scrollBar(BarState.Off)
  89.     }
  90.   }.width("100%").padding(10)
  91. }
  92. @Entry
  93. @Component
  94. struct LoadingProgressDemoExample {
  95.   @State loadingProgressList: (boolean | undefined | null)[] = [undefined, true, null, false]
  96.   @State widthList: (number | string)[] = ['110%', 220, '40%', 80]
  97.   @State loadingProgressIndex: number = 0
  98.   @State clickFlag: number = 0
  99.   scroller: Scroller = new Scroller()
  100.   build() {
  101.     Column() {
  102.       Scroll(this.scroller) {
  103.         Column({ space: 5 }) {
  104.           Column() {
  105.             LoadingProgress()
  106.               .color('#106836')
  107.               .size({ width: '100%' })
  108.               .contentModifier(new MyLoadingProgressStyle(this.loadingProgressList[this.loadingProgressIndex]))
  109.           }.width('100%').backgroundColor(0xdcdcdc)
  110.         }.width('100%').margin({ top: 5 })
  111.       }.height('85%')
  112.       Button('点击切换config.enableloading').onClick(() => {
  113.         this.clickFlag++
  114.         this.loadingProgressIndex = (this.loadingProgressIndex + 1) % this.loadingProgressList.length
  115.         console.log('enableLoading:' + this.loadingProgressList[this.loadingProgressIndex])
  116.       }).margin(20)
  117.     }
  118.   }
  119. }
  120. <strong>ts</strong>
复制代码

写在最后



  • 如果你觉得这篇内容对你还蛮有帮助,我想约请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以等待后续文章ing ,不定期分享原创知识。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表