HarmonyOS 鸿蒙Next lottie组件无法正常播放动画
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组件无法正常播放动画的问题,以下是一些可能的解决方案:
-
检查动画资源:
- 确保.json动画资源文件已放置在正确的目录下,如entry/src/main/ets/common/lottie。
- 验证文件路径是否正确,且文件未损坏。
-
配置lottie组件:
- 使用
lottie.loadAnimation
方法时,确保参数设置正确,包括容器、渲染器、循环播放、自动播放等。 - 特别注意
autoplay
参数,设置为true
以实现自动播放。
- 使用
-
考虑系统兼容性:
- 确认鸿蒙系统版本是否支持当前使用的lottie库版本。
- 如有必要,尝试更新lottie库到最新版本以解决兼容性问题。
-
查阅官方文档:
- 访问OpenHarmony官方文档或HarmonyOS开发者官网,了解更多关于lottie组件的使用说明和常见问题解决方案。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。