HarmonyOS 全局loading有什么方案吗

HarmonyOS
2024-12-25 14:06:08
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

可以通过封装customDialog实现全局loading效果。

1、封装一个弹框实例:

// CustomLoading.ets
@CustomDialog
export struct CustomLoading {
  controller?: CustomDialogController

  build() {
    Stack({ alignContent: Alignment.Center }) {
      Column() {
        LoadingProgress().width(30).height(30).color(Color.White)
        Text('请稍候')
          .fontColor(Color.White)
          .fontSize(16)
          .margin({ top: 15 })
          .width('100%')
          .textAlign(TextAlign.Center)
      }
      .justifyContent(FlexAlign.Center)
      .width(100)
      .height(100)
      .backgroundColor('#88000000')
      .borderRadius(8)
    }
    .width('100%')
    .height('100%')
    .backgroundColor(Color.Transparent)
  }
}

2、在EntryAbility.ts的onCreate方法里通过AppStorage定义关于弹框显示的全局属性,默认false不显示。

AppStorage.setOrCreate('showGlobalCustomDialog', false)

3、在window的入口page(比如Index.ets)里import并创建实例和监听方法,各页面使用时通过AppStorage.setOrCreate(‘showGlobalCustomDialog’, true)即可拉起弹窗。

// index.ets
import { CustomLoading } from '../common/CustomLoading'

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  @StorageLink('showGlobalCustomDialog') @Watch('globalCustomDialogStateChange') showGlobalCustomDialog: boolean = false
  dialogController: CustomDialogController | null = new CustomDialogController({
    builder: CustomLoading({}),
    alignment: DialogAlignment.Center,
    autoCancel: false,
    customStyle: true,
  })

  globalCustomDialogStateChange() {
    if (this.showGlobalCustomDialog) {
      if (this.dialogController != null) {
        this.dialogController.open()
      }
    } else {
      this.dialogController?.close()
    }
  }

  build() {
    Row() {
      Column() {
        Button('showLoading').onClick(() => {
          AppStorage.setOrCreate('showGlobalCustomDialog', true)
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
2024-12-25 16:34:47
相关问题
HarmonyOS 全局loading的实现方案
150浏览 • 1回复 待解决
HarmonyOS 是否全局loading这种控件?
834浏览 • 1回复 待解决
HarmonyOS 全局loading
310浏览 • 1回复 待解决
HarmonyOS 全局loading组件
648浏览 • 1回复 待解决
HarmonyOS通过方法调用的loading
729浏览 • 0回复 待解决
HarmonyOS 如何在全局使用loading组件?
1071浏览 • 1回复 待解决
HarmonyOS 没有全局的api loading动画
686浏览 • 1回复 待解决
HarmonyOS 全局loading的菊花如何实现?
717浏览 • 1回复 待解决
HarmonyOS 视频压缩以及请求全局loading
119浏览 • 1回复 待解决
HarmonyOS 设置字体全局方法
625浏览 • 1回复 待解决
屏幕旋转计算,什么好的方案
1266浏览 • 1回复 待解决
HarmonyOS的折叠屏适配有什么方案
995浏览 • 1回复 待解决
Image图片加载缓慢,什么方案么?
1656浏览 • 1回复 待解决
HarmonyOS 创建全局弹窗的推荐方案
142浏览 • 1回复 待解决
请问现在harmonyOS屏幕适配方案
4092浏览 • 1回复 待解决
HarmonyOS防CPP crash的具体方案
804浏览 • 1回复 待解决