HarmonyOS 鸿蒙Next表单提交等待时如何实现显示上层的加载动画效果

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next表单提交等待时如何实现显示上层的加载动画效果 我有几个表单,用户提交的数据比较多,主要是有最多有9张图片要上传,用户提交的时候等待时间比较长,如何实现一个等待的动画效果,并显示在最上层,提示用户等待提交完成,不要再操作?

2 回复

可以使用promptAction.openCustomDialog自定义弹窗实现loading效果,开始上传时打开弹窗,上传成功关闭弹窗。参考文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5#promptactionopencustomdialog11

下面demo你可以参考一下:

//Index.ets
import { changeDialogBuilder, MyShowTest } from '../common/HttpUtils'
import {customDialogBuilder} from './testProm'
let myShowTest = new MyShowTest()
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  onPageShow(): void {
    changeDialogBuilder(customDialogBuilder.bind(this))
  }
  build() {
    Row {
      Column {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            myShowTest.showTest()
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

//testProm.ets
@Builder
export function customDialogBuilder() {
  Column {
    Text('正在加载中').fontSize(16)
  }
  .height(100).width(100)
}

//HttpUtils.ets
import promptAction from '@ohos.promptAction'
let myDialogBuilder: CustomBuilder;
let customDialogId: number = 0
export function changeDialogBuilder(builder: CustomBuilder) {
  myDialogBuilder = builder
}
export class MyShowTest {
  showTest() {
    if (myDialogBuilder === undefined) {
      return
    }
    promptAction.openCustomDialog({
      builder: myDialogBuilder,
      alignment: DialogAlignment.Center,
    })
    .then((dialogId: number) => {
      customDialogId = dialogId
    })
    setTimeout(() => {
      promptAction.closeCustomDialog(customDialogId)
    }, 2000)
  }
}

更多关于HarmonyOS 鸿蒙Next表单提交等待时如何实现显示上层的加载动画效果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,实现表单提交等待时显示上层的加载动画效果,可以通过以下方式实现:

首先,在布局文件中定义一个加载动画的视图,例如使用ProgressIndicator组件来显示加载中的动画效果。这个视图初始状态可以设置为不可见(通过visibility属性控制)。

然后,在业务逻辑中,当用户触发表单提交操作时,将加载动画视图的可见性设置为可见(VISIBLE),同时开始执行表单提交的异步操作。

在异步操作完成后(无论是成功还是失败),都需要将加载动画视图的可见性设置回不可见(INVISIBLEGONE),并更新界面以反映操作结果。

为了实现更平滑的用户体验,可以考虑在异步操作开始时使用AnimatorAnimation类来控制加载动画视图的淡入淡出效果。

此外,还可以通过设置加载动画视图的层级属性(如elevationz属性,具体取决于布局类型),确保其在表单内容之上显示。

如果上述方法仍无法实现预期效果,可能是由于布局或动画设置不当。此时,可以检查相关属性设置是否正确,或尝试调整动画的触发时机和持续时间。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部