HarmonyOS lottie框架问题
lottie框架自定义了一个动画,放到了某个界面中,需要一进入就开始加载动画,但是大部分情况下进去界面的时候加载不出来动画,偶尔进去能加载出来。不知道是不是动画还没有初始化好的原因?
import lottie from '@ohos/lottie';
import { AnimationItem } from '@ohos/lottie';
import util from '@ohos.util';
import common from '@ohos.app.ability.common';
@Component
export struct ProgressBar {
@State message: string = 'progressBar'
@State viewWidth:number = 40
@State viewHeight:number = 40
private renderingSettings: RenderingContextSettings = new RenderingContextSettings(true)
private canvasRenderingContext: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.renderingSettings)
private animateItem: AnimationItem | null = null;
private mLottieData: object | null = null;
private animateName: string = "LoadingProgress";
loadView() {
if (this.mLottieData != null && this.animateItem == null) {
let contexts = getContext(this).createModuleContext('commonUi') as common.UIAbilityContext
this.animateItem = lottie.loadAnimation({
container: this.canvasRenderingContext,
renderer: 'canvas', // canvas 渲染模式
loop: true,
autoplay: true,
context: contexts,
name: this.animateName,
animationData: this.mLottieData,
})
}
}
async aboutToAppear() {
let resStr = util.TextDecoder.create('utf-8', { ignoreBOM: true })
let context = getContext(this).createModuleContext('commonUi') as common.UIAbilityContext
context.resourceManager.getRawFileContent('jiazai_slow_data.json', (err: Error, data: Uint8Array) => {
if (data === null || data === undefined || data.buffer === undefined) {
return;
}
let lottieStr = resStr.decodeWithStream(new Uint8Array(data.buffer));
this.mLottieData = JSON.parse(lottieStr);
this.loadView()
})
}
build() {
Canvas(this.canvasRenderingContext)
.width(this.viewWidth)
.height(this.viewHeight)
.backgroundColor(Color.Transparent)
.onReady(() => {
// 可在此生命回调周期中加载动画,可以保证动画尺寸正确
this.loadView()
})
.onDisAppear(() => {
lottie.destroy(this.animateName);
})
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS lottie使用问题
535浏览 • 1回复 待解决
HarmonyOS 关于lottie加载问题
28浏览 • 1回复 待解决
HarmonyOS 首页框架问题
501浏览 • 1回复 待解决
HarmonyOS lottie指定imagePath后lottie动画执行报错
198浏览 • 1回复 待解决
HarmonyOS lottie动画
164浏览 • 1回复 待解决
HarmonyOS UI测试框架问题
291浏览 • 1回复 待解决
HarmonyOS Tabs框架切换问题
146浏览 • 1回复 待解决
HarmonyOS RN使用lottie库
115浏览 • 1回复 待解决
HarmonyOS Lottie无法全屏加载
179浏览 • 1回复 待解决
HarmonyOS 三方库lottie HarmonyOS版,是否支持通过url加载lottie资源
225浏览 • 1回复 待解决
HarmonyOS视频流缓存框架问题
514浏览 • 1回复 待解决
HarmonyOS 应用启动框架AppStartup问题
242浏览 • 1回复 待解决
Lottie的相关库,请问是否有支持Lottie动画的库?
265浏览 • 1回复 待解决
HarmonyOS RN是否适配lottie?
113浏览 • 1回复 待解决
HarmonyOS lottie支持url吗?
421浏览 • 1回复 待解决
HarmonyOS 怎样加载Lottie动画
259浏览 • 1回复 待解决
HarmonyOS 如何加载lottie动画
224浏览 • 1回复 待解决
HarmonyOS 使用ohos/pulltorefresh框架的问题
138浏览 • 1回复 待解决
HarmonyOS 关于Rn框架搭建问题(重要)
301浏览 • 1回复 待解决
HarmonyOS lottie-react-native中如果使用线上json链接,则lottie无法正常展示
237浏览 • 1回复 待解决
HarmonyOS 本地lottie动画无法播放
750浏览 • 1回复 待解决
元数据绑定框架使用问题
6188浏览 • 1回复 待解决
HarmonyOS tabs + TabContent 框架刷新数据的问题
1519浏览 • 1回复 待解决
HarmonyOS Lottie动画加载不出来
183浏览 • 1回复 待解决
HarmonyOS lottie显示图片不成功
27浏览 • 1回复 待解决
加载动画的时机需要注意,点击按钮加载动画可按照正常逻辑放在点击事件内,如果想要实现进入页面自动播放动画,需要结合Canvas组件的onReady()生命回调周期实现,加载动画时机需放置在onReady()生命周期回调内或及之后。同一Canvas组件加载多次/不同动画资源,需要手动销毁动画(lottie.destroy()/animationItem.destroy()),之后才可再次加载其他动画资源。
参考文档:https://gitee.com/openharmony-tpc/lottieArkTS