Android使用lottie加載json動(dòng)畫的示例代碼
Lottie
Lottie 是 Airbnb 開(kāi)源的一個(gè)動(dòng)畫項(xiàng)目,它支持 iOS, mac OS Android RN,由于某些復(fù)雜動(dòng)畫的實(shí)現(xiàn),往往會(huì)寫很多的 code 來(lái)實(shí)現(xiàn)它,而且調(diào)試動(dòng)畫的效果會(huì)比較花費(fèi)時(shí)間。用它來(lái)解決某些動(dòng)畫會(huì)帶來(lái)很大的便利。
設(shè)計(jì)師在After Effects 設(shè)計(jì)好相關(guān)的動(dòng)畫,然后安裝上BodyMovin 這個(gè)插件,這個(gè)插件,可以幫導(dǎo)出動(dòng)畫效果的 JSON 文件,然后我們可以通過(guò) Lottie 來(lái)加載相關(guān)的 JSON 文件來(lái)實(shí)現(xiàn)動(dòng)畫效果。

優(yōu)勢(shì)
- 開(kāi)發(fā)可以方便的實(shí)現(xiàn)動(dòng)畫,節(jié)約調(diào)試動(dòng)畫效果時(shí)間等,不用寫一大堆 code 去實(shí)現(xiàn)動(dòng)畫,只要設(shè)計(jì)給相關(guān)的 JSON 文件就可以了。
- 多個(gè)平臺(tái)可以共用,例如 iOS 和 Android,公用一個(gè)動(dòng)畫。
- 可以通過(guò) URL 的方式加載 JSON 文件,來(lái)替換客戶端動(dòng)畫,不用發(fā)版本了
- 設(shè)計(jì)想了一個(gè)屌炸天的動(dòng)畫,然后給到開(kāi)發(fā),開(kāi)發(fā)說(shuō)這個(gè)實(shí)現(xiàn)不了,或者說(shuō)很費(fèi)時(shí)間,然后讓設(shè)計(jì)用這種方式去實(shí)現(xiàn)。
- 對(duì)于 iOS 來(lái)說(shuō)支持 ViewController 轉(zhuǎn)場(chǎng)動(dòng)畫
- iOS 平臺(tái)上用 Core Animation 做矢量動(dòng)畫。性能不錯(cuò),而且有緩存
- 對(duì)比于用 GIF 動(dòng)畫,手寫動(dòng)畫,輕量,性能和存儲(chǔ)上都更佳。
不足之處
- iOS 版本要 >= 8.0 才可以使用。不支持 7.x
- 對(duì)于一些交互性的動(dòng)畫,支持不是很好。主要是對(duì)于播放性的動(dòng)畫
- Bodymovin 插件待完善,仍然有部分 AE 效果無(wú)法成功導(dǎo)出
- 動(dòng)畫無(wú)法被編輯,加載下來(lái)是什么樣子,就原封不動(dòng)
github代碼傳送門 https://github.com/18380438200/LottieAnim
先上效果圖,這個(gè)是做的一個(gè)仿抖音的點(diǎn)贊動(dòng)畫:

眾所周知,屬性動(dòng)畫、補(bǔ)間動(dòng)畫通常只能做一些效果簡(jiǎn)單的,而做復(fù)雜的動(dòng)畫可采用gif圖,幀動(dòng)畫,但是這樣資源空間增大導(dǎo)致apk增大不小。而加載json文件實(shí)現(xiàn)動(dòng)畫就完美解決以上問(wèn)題。
設(shè)計(jì)師AE導(dǎo)出Json文件,Lotti 解析Json文件后調(diào)Core Animation的API繪制渲染。所以讓你們公司的UI去學(xué)一學(xué)AE吧,多們技能好防身。
Lottie開(kāi)源庫(kù)地址:一個(gè)集Android、Ios、React Native與Web平臺(tái)于一身的女子。
https://github.com/airbnb/lottie-android
使用方式:
引入庫(kù)
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" 是否自動(dòng)播放
常用操作:
lottieLike.playAnimation(); //播放
lottieLike.pauseAnimation(); //暫停
lottieLike.cancelAnimation(); //取消
lottieLike.getDuration(); //獲取動(dòng)畫時(shí)長(zhǎng)
lottieLike.addAnimatorListener(new Animator.AnimatorListener() { //添加動(dòng)畫監(jiān)聽(tīng)
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android入門之Fragment嵌套Fragment的用法詳解
這篇文章主要為大家詳細(xì)介紹了Android中如何實(shí)現(xiàn)Fragment嵌套Fragment的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02
Android Studio使用教程(一):下載與安裝及創(chuàng)建HelloWorld項(xiàng)目
這篇文章主要介紹了Android Studio使用教程(一):下載與安裝及創(chuàng)建HelloWorld項(xiàng)目,本文用詳細(xì)的圖文說(shuō)明講解了Android Studio初步使用,需要的朋友可以參考下2015-05-05
Flutter開(kāi)發(fā)通用頁(yè)面Loading組件示例詳解
這篇文章主要為大家介紹了Flutter開(kāi)發(fā)通用頁(yè)面Loading組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
分析Android Activity的啟動(dòng)過(guò)程
這篇文章主要介紹了分析Android Activity的啟動(dòng)過(guò)程的相關(guān)資料,需要的朋友可以參考下2017-07-07
Android開(kāi)發(fā)實(shí)現(xiàn)的簡(jiǎn)單五子棋游戲示例
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)的簡(jiǎn)單五子棋游戲,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)五子棋游戲功能的布局、游戲功能等具體實(shí)現(xiàn)步驟與相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
Android 基于MediatorLiveData實(shí)現(xiàn)紅點(diǎn)的統(tǒng)一管理
這篇文章主要介紹了Android 基于MediatorLiveData實(shí)現(xiàn)紅點(diǎn)的統(tǒng)一管理,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04
Android如何自定義View實(shí)現(xiàn)橫向的雙水波紋進(jìn)度條
最近有個(gè)需求需要實(shí)現(xiàn)自定義加載進(jìn)度條,于是深入研究了一下,這篇文章主要給大家介紹了關(guān)于Android如何自定義View實(shí)現(xiàn)橫向的雙水波紋進(jìn)度條的相關(guān)資料,需要的朋友可以參考下2021-11-11
詳解Android Material設(shè)計(jì)中陰影效果的實(shí)現(xiàn)方法
這篇文章主要介紹了Android Material設(shè)計(jì)中陰影效果的實(shí)現(xiàn)方法,包括自定義陰影的輪廓和裁剪等,需要的朋友可以參考下2016-04-04
解決Android Studio 出現(xiàn)“Cannot resolve symbo
今天在調(diào)試的時(shí)候,Android Studio報(bào)了一個(gè)莫名其妙的錯(cuò)誤Cannot resolve symbol'R'讓人不知所措,因?yàn)檫@東西根本不歸我管啊,怎么會(huì)出現(xiàn) Cannot resolve symbol 這種錯(cuò)誤呢?下面給大家分享Android Studio 出現(xiàn)“Cannot resolve symbol”解決方案,需要的朋友可以參考下2023-03-03
Android開(kāi)啟閃光燈的方法 Android打開(kāi)手電筒功能
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)啟閃光燈的方法,Android打開(kāi)手電筒功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07

