【鸿蒙优选三方库】@ohos/lottie:让 After Effects 动画在 HarmonyOS 上稳定播放

想在鸿蒙应用里播放设计师用 After Effects + Bodymovin 导出的精美动画?@ohos/lottie(基于 lottieArkTS 仓库)是 OpenHarmony 上一线主力 Lottie 方案,完整的动画引擎 + 丰富的播放控制 + 稳定的边界场景处理,久经大量应用打磨。

  • 包名@ohos/lottie
  • 当前版本:v2.0.32(v2.0.31 ✅ 推荐最新稳定版)
  • 协议:MIT
  • 安装ohpm install @ohos/lottie
  • 仓库:https://gitcode.com/CPF-ApplicationTPC/lottieArkTS

💡 选型提示

新项目/极致性能场景推荐使用 @ohos/lottie-turbo

  • 声明式调用更简洁
  • 支持并行加载、内存缓存、子线程渲染
  • 性能优化 30%+
  • 多动画/复杂动画场景下 UI 更流畅

@ohos/lottie(本文)更适合:存量项目维护 + 稳定性优先的场景


一、它解决了什么问题?

Lottie 是 Airbnb 开源的动画方案,让设计师在 After Effects 里做的动画,通过 Bodymovin 插件导出 JSON,再由 Lottie 库在 App/Web 里原生渲染——设计师产出零成本触达终端,是设计师与开发协作的"梦幻联动"。

@ohos/lottie 是把这一能力完整带到 OpenHarmony 的成熟方案:

  • 完整支持 Bodymovin JSON 规范;
  • 提供播放/暂停/停止/跳转/速度/方向等完整控制;
  • 支持动画片段、颜色修改、填充模式、帧率控制等高级特性;
  • 支持不可见时自动跳过绘制,省电省资源;
  • 完善的外部图片资源管理与缓存。

二、核心特点

特性 说明
完整动画解析 支持 AE 通过 Bodymovin 导出的 JSON 格式
多种加载方式 本地文件、JSON 数据、网络 URL 全支持
完整播放控制 播放、暂停、停止、跳转、速度、方向
高级特性 动画片段、颜色修改、填充模式、帧率控制
性能优化 不可见时自动跳过绘制
资源管理 外部图片资源加载、缓存、内存优化
健壮性增强 canvasShadow、空 dynamicProperties、空 assetData 等边界场景防崩

三、适用场景

  • 应用启动动画:启动屏、品牌展示。
  • 加载动画:骨架屏、加载圈、上拉加载动画。
  • 微交互反馈:点赞、收藏、支付成功、消息已读。
  • 节日/活动页面:运营 H5 风格的活动落地页。
  • 教育/娱乐:故事化内容、教学动画。
  • 数据可视化:图表入场动画。
  • 存量维护项目:已使用 @ohos/lottie 的项目继续升级维护。

四、快速上手

1. 安装

ohpm install @ohos/lottie

2. 播放一个本地动画

import { LottieView, LottieController } from '@ohos/lottie'

@Entry
@Component
struct Load {
  private controller: LottieController = new LottieController()

  build() {
    Column() {
      LottieView({
        source: $rawfile('lottie/anim.json'),
        controller: this.controller,
        loop: true,
        autoplay: true
      })
        .width(300).height(300)
    }
  }
}

3. 加载网络 JSON

LottieView({
  source: 'https://example.com/anim.json',
  controller: this.controller
})

4. 加载 JSON 数据(动态内容)

const jsonData = '{"v":"5.7.0","fr":30,"ip":0,"op":60,"w":300,"h":300, ...}'
LottieView({
  source: jsonData,  // 直接传 JSON 字符串
  controller: this.controller
})

5. 播放控制

this.controller.start()       // 播放
this.controller.pause()       // 暂停
this.controller.stop()        // 停止
this.controller.setProgress(0.5) // 跳转到 50%
this.controller.setSpeed(1.5)    // 1.5 倍速
this.controller.setDirection(-1)  // 倒放

6. 高级特性

// 播放动画片段(指定起止帧)
this.controller.playFromFrame(0, 60)

// 修改颜色
this.controller.setColor('shape1', '#FF0000')

// 设置填充模式
LottieView({
  source: 'anim.json',
  resizeMode: 'cover',
  controller: this.controller
})

五、亮点能力速览

  • 不可见时自动跳过绘制:页面退到后台、组件不可见时自动暂停渲染,省电省资源。
  • 三种加载方式:本地文件 / 网络 URL / JSON 字符串,覆盖所有场景。
  • 完整高级特性:动画片段、颜色修改、填充模式、帧率控制。
  • 健壮性持续打磨:v2.0.31 增强了对空 canvasShadow、空 dynamicProperties、空 assetData 等边界场景的防护,避免空指针崩溃。
  • 生态成熟:被大量鸿蒙应用采用,久经考验。

六、版本演进亮点

版本 时间 关键能力
v2.0.31 2026-05 ✅ 推荐升级:增强边界场景健壮性,避免空值场景下异常崩溃
v2.0.30 2026-04 稳定旧版

v2.0.30 → v2.0.31 均为兼容性升级,无需修改现有代码。


七、为什么值得选它?

  1. 成熟稳定:已在线上大量应用打磨,健壮性持续增强。
  2. 能力全面:从基础播放到高级特性(片段、颜色、填充模式、帧率)全覆盖。
  3. 三种加载方式:本地/网络/数据,按需选择。
  4. 资源管理完善:外部图片资源加载、缓存、内存优化一应俱全。
  5. 生态长青:OpenHarmony 上 Lottie 方案的主力,长期维护。

结论:如果你的项目已经在用 @ohos/lottie,继续放心升级;如果你是新项目且对性能敏感,优先考虑 @ohos/lottie-turbo;如果稳定性优先,@ohos/lottie 仍是可靠之选。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐