HarmonyOS 鸿蒙Next lottie组件无法正常播放动画

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

HarmonyOS 鸿蒙Next lottie组件无法正常播放动画

lottie组件无法正常播放动画 https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Flottie


更多关于HarmonyOS 鸿蒙Next lottie组件无法正常播放动画的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

建议更新到最新版本,再给你个demo参考一下:

import lottie, { AnimationItem } from '[@ohos](/user/ohos)/lottie'
import { BusinessError } from '[@ohos](/user/ohos).base';
import window from '[@ohos](/user/ohos).window';
import { common } from '@kit.AbilityKit';
[@Entry](/user/Entry)()
[@Component](/user/Component)
struct LottiePage {
  // 构建渲染上下文
  private mainRenderingSettings: RenderingContextSettings = new RenderingContextSettings(true)
  private mainCanvasRenderingContext: CanvasRenderingContext2D =
    new CanvasRenderingContext2D(this.mainRenderingSettings)
  [@State](/user/State) message: string = 'pages/lottie/LottiePage';
  private animateItem: AnimationItem | null = null;
  animateName: string = 'loading22'
  windowClass: window.Window | undefined = undefined;
  context = getContext(this) as common.UIAbilityContext
  aboutToAppear(): void {
    let config: window.Configuration = {
      name: "test",
      windowType: window.WindowType.TYPE_DIALOG,
      ctx: this.context
    };
    try {
      window.createWindow(config, (err: BusinessError, data) => {
        const errCode: number = err.code;
        if (errCode) {
          console.error('Failed to create the window. Cause: ' + JSON.stringify(err));
          return;
        }
        this.windowClass = data;
        console.info('Succeeded in creating the window. Data: ' + JSON.stringify(data));
        this.windowClass.resize(500, 1000);
      });
    } catch (exception) {
      console.error('Failed to create the window. Cause: ' + JSON.stringify(exception));
    }
  }
  build() {
    Column({ space: 15 }) {
      /**
       * 注意:canvas设置的宽高比例建议和动画json资源里面的宽高比例一致,
       * 如:json动画资源里的宽高比例是 1:2 ,则canvas设置的宽高也是 1:2
       */
      Canvas(this.mainCanvasRenderingContext)
        .width(110)
        .height(140)//.backgroundColor(Color.Gray)
        .onReady(() => {
          //抗锯齿的设置
          this.mainCanvasRenderingContext.imageSmoothingEnabled = true;
          this.mainCanvasRenderingContext.imageSmoothingQuality = 'medium'
          this.animateItem?.destroy(this.animateName)
          this.animateItem = lottie.loadAnimation({
            container: this.mainCanvasRenderingContext, // 渲染上下文
            renderer: 'canvas', // 渲染方式
            loop: true, // 是否循环播放,默认true
            autoplay: false, // 是否自动播放,默认true
            name: this.animateName, // 动画名称
            // path 参数:只支持加载entry/src/main/ets 文件夹下的相对路径,不支持跨包查找文件
            // path 参数和 animationData 参数,二者选其一
            path: 'lottie/data2.json',
          })
        })
      Row({ space: 10 }) {
        Button('点击播放')
          .onClick(() => {
            // emitter.emit('10010')
            this.animateItem?.play()
          })
        Button('点击暂停')
          .onClick(() => {
            this.animateItem?.pause()
          })
        Button('点击停止')
          .onClick(() => {
            this.animateItem?.pause()
          })
      }
      Row({ space: 10 }) {
        Button('速度')
          .onClick(() => {
            this.animateItem?.setSpeed(1)
          })
        Button('获取时长')
          .onClick(() => {
            let time = this.animateItem?.getDuration();
            console.log('lottie', time?.toString())
          })
      }
    }
    .width('100%')
  }
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

更多关于HarmonyOS 鸿蒙Next lottie组件无法正常播放动画的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next中lottie组件无法正常播放动画的问题,以下是一些可能的解决方案:

  1. 检查动画资源

    • 确保.json动画资源文件已放置在正确的目录下,如entry/src/main/ets/common/lottie。
    • 验证文件路径是否正确,且文件未损坏。
  2. 配置lottie组件

    • 使用lottie.loadAnimation方法时,确保参数设置正确,包括容器、渲染器、循环播放、自动播放等。
    • 特别注意autoplay参数,设置为true以实现自动播放。
  3. 考虑系统兼容性

    • 确认鸿蒙系统版本是否支持当前使用的lottie库版本。
    • 如有必要,尝试更新lottie库到最新版本以解决兼容性问题。
  4. 查阅官方文档

    • 访问OpenHarmony官方文档或HarmonyOS开发者官网,了解更多关于lottie组件的使用说明和常见问题解决方案。

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

回到顶部