【HarmonyOS NEXT】在 HarmonyOS NEXT 中实现优雅的加载动画

【HarmonyOS NEXT】在 HarmonyOS NEXT 中实现优雅的加载动画

在移动应用开发中,加载动画是提升用户体验的重要工具。在应用程序处理数据或加载页面时,为用户提供视觉反馈尤为关键。在这篇博客中,我们将探讨如何在 HarmonyOS NEXT 中使用 Stack 布局结合 LoadingProgress 组件来实现流畅的加载动画。

为什么使用加载动画?

加载动画在应用体验中扮演着重要角色,通过动态提示用户进度状态,可以有效提升应用的响应性感知。特别是在网络环境不稳定或数据繁重的场景下,加载动画不仅能缓解等待时的焦虑,还能美化用户界面,增加应用的整体吸引力。

HarmonyOS NEXT 技术栈

在 HarmonyOS NEXT 中,开发者可利用 Stack 布局和 LoadingProgress 组件轻松实现重叠效果,进而实现加载动画的需求。

具体实现

以下是如何实现加载动画的详细步骤。

定义加载状态

首先,我们需要定义一个状态变量以追踪加载状态。在页面未加载完成之前,我们需要显示加载动画,而一旦加载完成,我们便隐藏这个动画。

typescript 复制代码
@State loaded: boolean = false;

这里的 loaded 变量初始值为 false,表示页面尚未加载完成。

利用 Stack 布局

Stack 是一个常用的布局工具,它允许组件的重叠显示。在实现过程中,我们利用 Stack 布局将 Web 组件与 LoadingProgress 组件放置在一起,并根据加载状态切换显示状态。

typescript 复制代码
build() {
  Stack() {
    // Web组件用于展示网页内容
    Web({ 
      src: $rawfile("homePage/index.html"), 
      controller: this.controller.getWebViewController() 
    })
      .javaScriptAccess(true)
      .javaScriptProxy(this.controller.getJavaScriptProxy())
      .onAlert((event) => {
        return false;
      })
      .domStorageAccess(true)
      .zoomAccess(true)
      .fileAccess(true)
      .mixedMode(MixedMode.All)
      .height('100%')
      .width('100%')
      .onPageEnd((event) => {
        if (event) {
          this.loaded = true; // 页面加载完成
        }
      });

    // 显示加载动画
    if (!this.loaded) {
      LoadingProgress()
        .height(180)
        .color('#cd0401'); // 红色的加载指示器
    }
  }
}
关键逻辑详解
  1. Web 组件 :负责加载网页内容。我们通过 onPageEnd 事件监听页面加载状态,一旦加载完毕,将 loaded 设为 true

  2. LoadingProgress 组件 :在 loadedfalse 时显示。当页面结束加载,状态变为 true 后,LoadingProgress 就会消失不再渲染。

  3. Stack 布局 :这个布局允许我们将 WebLoadingProgress 组件堆叠。由于 LoadingProgress 在上方,当 loadedfalse 时,它会覆盖在 Web 组件之上。

相关推荐
阿林来了3 小时前
Flutter三方库适配OpenHarmony【flutter_speech】— 与其他 HarmonyOS Kit 的联动
flutter·华为·harmonyos
加农炮手Jinx9 小时前
Flutter for OpenHarmony:web_socket_channel 全平台 WebSocket 通信标准库,从原理到鸿蒙实战(3000字深度解析)
android·前端·网络·websocket·flutter·华为·harmonyos
王码码20359 小时前
Flutter for OpenHarmony:stomp_dart_client 打造实时消息引擎(企业级 WebSocket 通信标准) 深度解析与鸿蒙适配指南
网络·websocket·网络协议·flutter·ui·华为·harmonyos
王码码20359 小时前
Flutter for OpenHarmony:web_socket 纯 Dart 标准 WebSocket 客户端(跨平台兼容性之王) 深度解析与鸿蒙
android·前端·websocket·网络协议·flutter·华为·harmonyos
松叶似针11 小时前
Flutter三方库适配OpenHarmony【secure_application】— 生产环境发布与持续维护
flutter·harmonyos
星空222312 小时前
【HarmonyOS】RN_of_HarmonyOS实战项目:URL链接输入
华为·harmonyos
FrameNotWork12 小时前
HarmonyOS 实现仿抖音上下滑动照片浏览(弹簧阻尼动画详解)
华为·harmonyos
●VON16 小时前
HarmonyOS应用开发实战(基础篇)Day09-《构建布局详解下》
华为·harmonyos·训练营·von
●VON16 小时前
HarmonyOS应用开发实战(基础篇)Day08-《构建布局详解上》
华为·harmonyos·鸿蒙·von
键盘鼓手苏苏1 天前
Flutter for OpenHarmony:csslib 强力 CSS 样式解析器,构建自定义渲染引擎的基石(Dart 官方解析库) 深度解析与鸿蒙适配指南
css·flutter·harmonyos