Lottie动画慢机器人

Jav*_*dez 8 animation android

我正在使用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,所有这些都发生在主线程上.

你能告诉我有没有办法解决这个问题?

谢谢

Nic*_*oso 8

文档提到了一些影响性能的项目

  • 如果组合没有掩码或遮罩,则性能和内存开销应该非常好

  • Png序列甚至比gif更糟糕(由于文件大小)

还有一些通用的Android /移动设备问题需要考虑:

  • 通过width="match_parent", height="wrap_content"组合,图像将按比例放大.使用包裹,包裹或固定尺寸.
  • PNG上的Alpha增加了处理的额外开销

如果您的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)

  • 您可以改为使用“ animationView.useHardwareAcceleration(true);”。目前,该实验方法已标记为“已弃用”。使用版本** 2.2.3 ** (2认同)