我正在使用Airbnb的新库Lottie在我的应用程序中制作动画.
动画由70 kb JSON文件和328 kb图像文件夹组成.这个文件夹中有13个小png.
根据GitHub回购的指示,我宣布我的观点是这样的
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:lottie_fileName="animation.json"
android:layout_gravity="bottom"
app:lottie_loop="false"
app:lottie_autoPlay="true"/>
Run Code Online (Sandbox Code Playgroud)
然后,在相关的java类中我调用:
mLottieView.setImageAssetsFolder("images");
Run Code Online (Sandbox Code Playgroud)
但是,我有一个问题.动画很笨拙,而且我的记忆用量在屋顶上跳跃.它从13 MB到89,所有这些都发生在主线程上.
你能告诉我有没有办法解决这个问题?
谢谢
该文档提到了一些影响性能的项目
如果组合没有掩码或遮罩,则性能和内存开销应该非常好
Png序列甚至比gif更糟糕(由于文件大小)
还有一些通用的Android /移动设备问题需要考虑:
width="match_parent", height="wrap_content"组合,图像将按比例放大.使用包裹,包裹或固定尺寸.如果您的UI线程按照您的建议做了太多工作,您是否可以推迟开始动画?如果这是一个选项,那么LottieComposition有静态方法,如LottieComposition.fromJson().
您可以在后台线程上手动设置合成(然后可选择创建LottieDrawable并设置合成).完成后,您可以切换到UI线程和setComposition(或setImageDrawable)LottieAnimationView
小智 5
我已经通过使用这两行代码解决了这个问题
final LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);
animationView.useExperimentalHardwareAcceleration(true);
animationView.enableMergePathsForKitKatAndAbove(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10716 次 |
| 最近记录: |