Android Lottie是一款開源的動畫庫,旨在簡化開發人員在Android中使用體驗卓越的動畫效果。本文將從多個方面詳細闡述Android Lottie的特點和用法。
一、入門指南
1、Android Lottie是什麼?
Android Lottie是一款開源的動畫庫,可以將Adobe After Effects的高級動畫轉換為本地可執行代碼,實現在移動設備上無縫展示。可以使用它來創建流暢、高效、可控制的動畫效果。它基於Json格式,可跨平台(Android、iOS、Web等)使用。
2、為什麼選擇使用Android Lottie?
使用Android Lottie可以讓你輕鬆創建並實現複雜的動畫,無需再絞盡腦汁開發海量API。同時,它支持各種動畫效果,且動畫質量非常高。Lottie是一個優秀的動畫實現框架,可以極大地提高開發效率。
3、如何引入Lottie?
dependencies {
implementation ‘com.airbnb.android:lottie:$lottieVersion’ //Lottie版本號
}
4、如何開始使用Lottie?
使用Lottie可以直接使用播放的json文件來展示動畫效果。首先,獲取需要展示的動畫文件(可以從Lottie Animation的網站下載),將下載下來的JSON文件存儲在應用的assets文件夾下,並在布局文件中使用LottieAnimationView組件展示動畫效果。
LottieAnimationView lottieAnimationView = (LottieAnimationView) findViewById(R.id.lottie_view);
lottieAnimationView.setAnimation("explosion.json");
lottieAnimationView.loop(true);
lottieAnimationView.playAnimation();
二、進階操作
1、Lottie視圖和視圖動畫
Lottie通常將可重用的Lottie視圖存儲在單個文件中,並以視圖動畫方式展示。這也允許您在單個文件中配置複雜的Lottie動畫,以及為其分配布局參數。在布局中使用,它繼承自View。
<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_autoPlay="true"
app:lottie_loop="true"
/>
2、Lottie緩存
Lottie Animation 在加載 JSON 文件時,它是從 Assets 中讀取文件並轉換為 Lottie Composition。為了更好的性能,Lottie 支持將 Lottie Composition 的緩存可持續化在可配置的 Cache 中,以便於下一次訪問。比如使用 LottieCompositionCache 的 CacheKey,表示應緩存 LottieComposition 的唯一標識符。
CacheKey cacheKey = new SimpleCacheKey("my_composition");
LottieComposition composition = cacheProvider.fetch(cacheKey);
if (composition == null) {
InputStream inputStream = ...
composition = new LottieComposition
.Factory()
.fromJsonInputStreamSync(inputStream, "my_composition");
cacheProvider.put(cacheKey, composition);
}
3、與 Property Animation 集成
Property Animation是Android系統提供的View動畫框架,Lottie Animation也支持與Android 自帶動畫框架Property Animation 結合使用。可以使用 ValueAnimator 播放 LottieComposition 動畫。創建動畫播放器
LottieComposition.Factory.fromRawRes(getContext(), R.raw.material_wave_loading)
.addListener(new LottieListener() {
@Override
public void onResult(LottieComposition result) {
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
animationView.setProgress((Float) animation.getAnimatedValue());
}
});
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.REVERSE);
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(900);
animator.start();
}
});
三、Lottie文件創建
1、導出JSON文件
在Adobe After Effects中操作製作的 Lottie 動畫,導出時選擇 Bodymovin 插件進行導出,導出文件類型為 JSON。導出 Lottie 動畫時,你應該需要保持與你的主應用程序一致的編碼方式,以便以後的使用。
2、性能優化
Lottie的唯一缺點是在特定情況下它會變得非常笨重,並且消耗電池壽命。在這種情況下,查閱 Lottie調優,以獲得更好的性能表現。
3、工作流程和進度監視
在 Lottie 中,可以借用 LottieAnimationView 對象,使用 addAnimatorUpdateListener(…) ,來追蹤播放進度。在 LottieAnimationView 上設置合適的 loop true/false 和 addAnimatorUpdateListener(…) 向監聽器中添加進度追蹤,即可同時運行多個動畫文件。
LottieAnimationView animationView = findViewById(R.id.loading_view);
...
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float progress = (float) animation.getAnimatedValue();
animationView.setProgress(progress);
}
});
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.REVERSE);
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(900);
animator.start();
四、結語
總之,Android Lottie極大地簡化了動畫實現的難度,同時獲得了更高的質量和效率。通過本文的介紹,相信你已經對Android Lottie的使用和應用有了更加深入的了解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/186971.html