Android使用lottie加載json動畫的示例代碼
Lottie
Lottie 是 Airbnb 開源的一個動畫項目,它支持 iOS, mac OS Android RN,由于某些復(fù)雜動畫的實現(xiàn),往往會寫很多的 code 來實現(xiàn)它,而且調(diào)試動畫的效果會比較花費時間。用它來解決某些動畫會帶來很大的便利。
設(shè)計師在After Effects 設(shè)計好相關(guān)的動畫,然后安裝上BodyMovin 這個插件,這個插件,可以幫導(dǎo)出動畫效果的 JSON 文件,然后我們可以通過 Lottie 來加載相關(guān)的 JSON 文件來實現(xiàn)動畫效果。
優(yōu)勢
- 開發(fā)可以方便的實現(xiàn)動畫,節(jié)約調(diào)試動畫效果時間等,不用寫一大堆 code 去實現(xiàn)動畫,只要設(shè)計給相關(guān)的 JSON 文件就可以了。
- 多個平臺可以共用,例如 iOS 和 Android,公用一個動畫。
- 可以通過 URL 的方式加載 JSON 文件,來替換客戶端動畫,不用發(fā)版本了
- 設(shè)計想了一個屌炸天的動畫,然后給到開發(fā),開發(fā)說這個實現(xiàn)不了,或者說很費時間,然后讓設(shè)計用這種方式去實現(xiàn)。
- 對于 iOS 來說支持 ViewController 轉(zhuǎn)場動畫
- iOS 平臺上用 Core Animation 做矢量動畫。性能不錯,而且有緩存
- 對比于用 GIF 動畫,手寫動畫,輕量,性能和存儲上都更佳。
不足之處
- iOS 版本要 >= 8.0 才可以使用。不支持 7.x
- 對于一些交互性的動畫,支持不是很好。主要是對于播放性的動畫
- Bodymovin 插件待完善,仍然有部分 AE 效果無法成功導(dǎo)出
- 動畫無法被編輯,加載下來是什么樣子,就原封不動
github代碼傳送門 https://github.com/18380438200/LottieAnim
先上效果圖,這個是做的一個仿抖音的點贊動畫:
眾所周知,屬性動畫、補間動畫通常只能做一些效果簡單的,而做復(fù)雜的動畫可采用gif圖,幀動畫,但是這樣資源空間增大導(dǎo)致apk增大不小。而加載json文件實現(xiàn)動畫就完美解決以上問題。
設(shè)計師AE導(dǎo)出Json文件,Lotti 解析Json文件后調(diào)Core Animation的API繪制渲染。所以讓你們公司的UI去學(xué)一學(xué)AE吧,多們技能好防身。
Lottie開源庫地址:一個集Android、Ios、React Native與Web平臺于一身的女子。
https://github.com/airbnb/lottie-android
使用方式:
引入庫
compile 'com.airbnb.android:lottie:1.0.1'
創(chuàng)建assets文件夾,將json文件放入其中。
引用LottieAnimationView控件
<com.airbnb.lottie.LottieAnimationView android:id="@+id/lottie_likeanim" android:layout_width="match_parent" android:layout_height="match_parent" app:lottie_fileName="likeanim.json" app:lottie_loop="true" android:layout_centerInParent="true"/>
常用屬性:
- app:lottie_fileName="likeanim.json" 加載json的文件名
- app:lottie_loop="true" 是否循環(huán)播放
- app:lottie_autoPlay="true" 是否自動播放
常用操作:
lottieLike.playAnimation(); //播放 lottieLike.pauseAnimation(); //暫停 lottieLike.cancelAnimation(); //取消 lottieLike.getDuration(); //獲取動畫時長 lottieLike.addAnimatorListener(new Animator.AnimatorListener() { //添加動畫監(jiān)聽 @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } });
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android使用httpPost向服務(wù)器發(fā)送請求的方法
這篇文章主要介紹了Android使用httpPost向服務(wù)器發(fā)送請求的方法,實例分析了Android針對HttpPost類的操作技巧,需要的朋友可以參考下2015-12-12Android5.1系統(tǒng)通過包名給應(yīng)用開放系統(tǒng)權(quán)限的方法
這篇文章主要介紹了Android5.1系統(tǒng)通過包名給應(yīng)用開放系統(tǒng)權(quán)限的方法,此文介紹一種通過修改Android平臺系統(tǒng)層代碼,根據(jù)指定的應(yīng)用包名給對應(yīng)的應(yīng)用在該平臺上開放系統(tǒng)權(quán)限,需要的朋友可以參考下2017-11-11Android開發(fā)Jetpack組件ViewModel使用講解
這篇文章主要介紹了Android?Jetpack架構(gòu)組件?ViewModel詳解,ViewModel類讓數(shù)據(jù)可在發(fā)生屏幕旋轉(zhuǎn)等配置更改后繼續(xù)存在,ViewModel類旨在以注重生命周期的方式存儲和管理界面相關(guān)的數(shù)據(jù),感興趣可以來學(xué)習(xí)一下2022-08-08