lottie-android

介绍:

Airbnb开源的一个在安卓上使用After Effects 动画的库。

运行效果:

使用说明:

 build.gradle file:

dependencies {  
  compile 'com.airbnb.android:lottie:1.0.1'
}

lottie 支持 Jellybean (API 16) 及以上。最简单的使用方式是和LottieAnimationView一起使用:  

<com.airbnb.lottie.LottieAnimationView
        android:id="@+id/animation_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:lottie_fileName="hello-world.json"
        app:lottie_loop="true"
        app:lottie_autoPlay="true" />

你可以在代码里动态的加载。加载app/src/main/assets中的json:

LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);
animationView.setAnimation("hello-world.json");
animationView.loop(true);

这个方法将加载文件并在后台解析动画,解析完成即开始异步渲染。

如果你想复用动画比如列表的每个item中或者从网络请求一个JSONObject:

 LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);
 ...
 LottieComposition composition = LottieComposition.fromJson(getResources(), jsonObject, (composition) -> {
     animationView.setComposition(composition);
     animationView.playAnimation();
 });

然后你就可以控制动画并添加listener了:

animationView.addAnimatorUpdateListener((animation) -> {
    // Do something.
});
animationView.playAnimation();
...
if (animationView.isAnimating()) {
    // Do something.
}
...
animationView.setProgress(0.5f);
...
// Custom animation speed or duration.
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f)
    .setDuration(500);
animator.addUpdateListener(animation -> {
    animationView.setProgress(animation.getAnimatedValue());
});
animator.start();
...
animationView.cancelAnimation();

在底层LottieAnimationView使用LottieDrawable来渲染动画,如果你需要,你可以直接使用drawable:

LottieDrawable drawable = new LottieDrawable();
LottieComposition.fromAssetFileName(getContext(), "hello-world.json", (composition) -> {
    drawable.setComposition(composition);
});

如果你的动画被频繁使用,LottieAnimationView有一个可选的缓存策略:LottieAnimationView#setAnimation(String, CacheStrategy)。CacheStrategy可以是 Strong, Weak, 或者 None

已下载
0