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);
})
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS lottie使用问题
1059浏览 • 1回复 待解决
HarmonyOS 关于lottie加载问题
894浏览 • 1回复 待解决
HarmonyOS 首页框架问题
1124浏览 • 1回复 待解决
HarmonyOS lottie指定imagePath后lottie动画执行报错
916浏览 • 1回复 待解决
HarmonyOS lottie动画
837浏览 • 1回复 待解决
HarmonyOS UI测试框架问题
1064浏览 • 1回复 待解决
HarmonyOS Tabs框架切换问题
643浏览 • 1回复 待解决
HarmonyOS Lottie无法全屏加载
829浏览 • 1回复 待解决
HarmonyOS RN使用lottie库
644浏览 • 1回复 待解决
HarmonyOS 三方库lottie HarmonyOS版,是否支持通过url加载lottie资源
1042浏览 • 1回复 待解决
HarmonyOS 应用启动框架AppStartup问题
1327浏览 • 1回复 待解决
HarmonyOS视频流缓存框架问题
886浏览 • 1回复 待解决
Lottie的相关库,请问是否有支持Lottie动画的库?
935浏览 • 1回复 待解决
HarmonyOS 怎样加载Lottie动画
793浏览 • 1回复 待解决
HarmonyOS 如何加载lottie动画
861浏览 • 1回复 待解决
HarmonyOS RN是否适配lottie?
638浏览 • 1回复 待解决
HarmonyOS lottie支持url吗?
943浏览 • 1回复 待解决
HarmonyOS lottie-react-native中如果使用线上json链接,则lottie无法正常展示
765浏览 • 1回复 待解决
HarmonyOS 使用ohos/pulltorefresh框架的问题
604浏览 • 1回复 待解决
HarmonyOS 关于Rn框架搭建问题(重要)
1481浏览 • 1回复 待解决
HarmonyOS 本地lottie动画无法播放
1435浏览 • 1回复 待解决
元数据绑定框架使用问题
6975浏览 • 1回复 待解决
HarmonyOS tabs + TabContent 框架刷新数据的问题
2378浏览 • 1回复 待解决
HarmonyOS Lottie动画加载不出来
874浏览 • 1回复 待解决
HarmonyOS lottie显示图片不成功
719浏览 • 1回复 待解决
加载动画的时机需要注意,点击按钮加载动画可按照正常逻辑放在点击事件内,如果想要实现进入页面自动播放动画,需要结合Canvas组件的onReady()生命回调周期实现,加载动画时机需放置在onReady()生命周期回调内或及之后。同一Canvas组件加载多次/不同动画资源,需要手动销毁动画(lottie.destroy()/animationItem.destroy()),之后才可再次加载其他动画资源。
参考文档:https://gitee.com/openharmony-tpc/lottieArkTS