Lottie 站在巨人的肩膀上實現 Android 酷炫動畫效果

??????說到動畫效果,一般都會感到很高端,感覺很酷炫;而小菜技術有限,稍復雜的動畫效果也需要很多時間處理,但是遇到時間緊任務重的情況該怎么辦呢?那就嘗試一下 Lottie 吧,酷炫的動畫集成卻相當簡單,還支持跨平臺。

Lottie 是個啥?

??????Lottie 是一個開源的動畫工具由驚一群 Airbnb 的神人開發。它是一個 IOS/Android/React Native 本地庫,渲染后效果動畫實時,允許應用程序使用動畫一樣容易,因為他們使用靜態圖像。

Lottie 咋集成?

  1. build.gradle 中添加 compile 'com.airbnb.android:lottie:2.5.5';小菜需要支持 Android 版本 15,所以需要在 AndroidManifest.xml 中添加如下版本權限:
<uses-sdk tools:overrideLibrary="com.airbnb.lottie" />

??????Tips: 此時還要注意 AndroidManifest.xml 根目錄中要添加 xmls:tools,如圖:

  1. 同步之后即可添加動畫效果,在眾多酷炫的動畫中選擇符合自身業務的動畫,下載,會生成一個 json 文件,可供 Android 和 IOS 共用,將下載好的 json 文件拷貝到 assets 中;小菜好奇 json 文件內容,打開大概了解是動畫圖層的一系列元素,但并不能直接明了的理解,這也是一個動畫不方便動態修改樣式但弊端之一;
  1. 引用 LottieAnimationView,xml 中直接添加并設置基本屬性或只是在 xml 中添加控件通過 Java/Kotlin 調整 LottieAnimationView 動畫過程;
<!-- 第一種通過 xml 添加 LottieAnimationView 動畫屬性 -->
<com.airbnb.lottie.LottieAnimationViewandroid:layout_width="match_parent"android:layout_height="80dp"android:layout_gravity="center"airbnb:lottie_autoPlay="true"airbnb:lottie_fileName="animation-w180-h180.json"airbnb:lottie_loop="true" /><!-- 第二種 xml 中只添加 LottieAnimationView 基本屬性 -->
<com.airbnb.lottie.LottieAnimationViewandroid:id="@+id/test_lav1"android:layout_width="wrap_content"android:layout_height="80dp"android:layout_weight="1" />
  1. 若第二種,通過 Java/Kotlin 動態設置 LottieAnimationView 動畫屬性;
mLav1.setAnimation("animation-w180-h180.json");
// ------ 設置動畫的三種方式 ------
// 1. 當前版本已經不推薦使用該方法了
// mLav1.loop(true);
// 2. 設置循環動畫次數
// mLav6.setRepeatCount(5);
// 3. 設置動畫輪播屬性,從頭播放
// mLav5.setRepeatMode(Animation.RESTART);
mLav1.setRepeatMode(Animation.RESTART);
mLav1.playAnimation();

至此,即可實現 LottieAnimationView 動畫的完整效果,小菜在測試時還測試了以下的屬性,因為 LottieAnimationView 繼承的還是 ImageView,所以很多屬性都保留,還包括動畫的堅挺方法;也嘗試了一下 pauseAnimation() 和 cancelAnimation(),均可停止動畫播放:

// 可監聽動畫的各階段屬性
mLav1.addAnimatorListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {Log.e(TAG, "onAnimationStart");}@Overridepublic void onAnimationEnd(Animator animation) {Log.e(TAG, "onAnimationEnd");}@Overridepublic void onAnimationCancel(Animator animation) {Log.e(TAG, "onAnimationCancel");}@Overridepublic void onAnimationRepeat(Animator animation) {Log.e(TAG, "onAnimationRepeat");}
});// pauseAnimation() 和 cancelAnimation()
mLav3.setAnimation("animation-w180-h1802.json");
mLav3.loop(true);
mLav3.playAnimation();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {@Overridepublic void run() {mLav3.pauseAnimation();
//      mLav4.cancelAnimation();}
}, 3000);

Lottie 孰優劣?

優勢:

??????Lottie 的優勢很明顯,動畫效果酷炫且流暢;支持跨平臺效果統一;集成簡單。

劣勢:

??????萬事萬物都有兩面性,Lottie 的劣勢在于,動畫效果不可動態修改樣式,這一點很重要,不能直接調整動畫的顏色等,依賴于 json 文件;據說有個別的動畫兼容性不太好(小菜并沒遇到)。

如何緩解劣勢:

??????Lottie 難道只是固定的網站上這些樣式嗎?有些樣式很好,但是個別顏色不太合適的動畫效果怎么辦?官方提供了 Lottie Editor,可調整各個圖層的顏色;還有官方文檔 Lottie Doc 方便我們更快速高效的使用 Lottie


??????Lottie 是一種便捷的動畫方式,小菜覺得學好動畫的基礎也很重要,希望會對各位有所幫助。以下是小菜公眾號,歡迎閑來吐槽~

公眾號.jpg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390046.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

正則表達式(讀書過程所記未整理)

\d 表示一位數字字符 \d{3} 表示3個數字字符 匹配電話比如400-400-1118 import re phone_number re.compile(r\d{3}-\d{3}-\d{4}) mo phone_number.search(rfor a number is 400-400-4000) print(mo.group()) ************************************************************…

java1

不知道為啥粘貼的圖片是一堆編碼。。。。 如何插入圖片 博客后后臺MarkDown編輯器上只有一個按鈕&#xff0c;就是用來上傳圖片并自動插入MarkDown標記的&#xff0c;超級好用 &#xff08;一&#xff09;學習總結 1.在java中通過Scanner類完成控制臺的輸入&#xff0c;查閱JDK…

430. 扁平化多級雙向鏈表

430. 扁平化多級雙向鏈表 多級雙向鏈表中&#xff0c;除了指向下一個節點和前一個節點指針之外&#xff0c;它還有一個子鏈表指針&#xff0c;可能指向單獨的雙向鏈表。這些子列表也可能會有一個或多個自己的子項&#xff0c;依此類推&#xff0c;生成多級數據結構&#xff0c…

PHPstudy搭建本地環境的網頁加載速度慢的解決方案

PHP5.3以上&#xff0c;如果數據庫鏈接地址是localhost&#xff0c;會自動檢測最終的地址是IPV4還是IPV6&#xff0c;所以會比較慢。解決辦法&#xff1a;修改數據庫的鏈接地址&#xff0c;將localhost改為127.0.0.1即可。 原文鏈接&#xff1a;https://chasjd.com/posts/fb433…

標記偏見_分析師的偏見

標記偏見“Beware of the HiPPO in the room” — The risks and dangers of top-down, intuition-based decision making are well known in the business world. Experimentation and data-based decision making become widely acknowledged as the right way to steer a bu…

scott登錄查詢常用語句

一、簡單查詢 1.簡單查詢select * from emp;--查詢表emp中的所有數據select empno as id,ename as name from emp;--查詢表emp中的empno顯示為id&#xff0c;ename顯示為name 2.去除重復select distinct job from emp;--將表emp中的job去重select distinct job,deptno from emp…

CSS結構的基礎認知

css的屬性值與html的屬性值用法不相上下&#xff0c;但是css主要分為內聯樣式表和外聯樣式表。 內聯樣式表用法&#xff1a;在html文件中的《head》頭文件中添加<style></style>標簽&#xff0c;在標簽內添加所需的屬性值&#xff0c;例如&#xff1a;<!DOCTYPE…

BZOJ1453: [Wc]Dface雙面棋盤

Time Limit: 10 Sec Memory Limit: 64 MB Submit: 784 Solved: 422 [Submit][Status][Discuss] Description 佳佳有一個 nnn 行 nnn 列的黑白棋盤&#xff0c;每個格子都有兩面&#xff0c;一面白色&#xff0c;一面黑色。佳佳把棋盤平放在桌子上&#xff0c;因此每個格子恰好一…

用戶體驗數據分析 書單_如何使用數據改善用戶體驗設計

用戶體驗數據分析 書單In the current age of technology, if an entrepreneur comes up with a grand idea, chances are they’ll need a pretty sweet website to go along with it. And if they want their idea to really sell, they will also need a website that reall…

推薦11個實用的JavaScript庫

2019獨角獸企業重金招聘Python工程師標準>>> JavaScript 仍然是 2018 年最受歡迎和使用最為廣泛的編程語言&#xff0c;因此 JavaScript 生態系統也會繼續發展壯大。 然而&#xff0c;JavaScript 的標準庫仍然繼續保持“短小精悍”的身材。為了填補標準庫功能方面的…

371. 兩整數之和

371. 兩整數之和 給你兩個整數 a 和 b &#xff0c;不使用 運算符 和 - ???????&#xff0c;計算并返回兩整數之和。 示例 1&#xff1a; 輸入&#xff1a;a 1, b 2 輸出&#xff1a;3 示例 2&#xff1a; 輸入&#xff1a;a 2, b 3 輸出&#xff1a;5 提示&a…

【福利】微信小程序精選Demo合集

小編最近在開發小程序&#xff0c;也讀到了不少優秀的小程序源碼&#xff0c;項目中有些需求可以直接從源碼里粘貼復制過來&#xff0c;雖然這樣做不利于自己獨立編寫代碼&#xff0c;但比較是給公司做項目啊&#xff0c;秉著效率第一的原則&#xff0c;簡直沒有什么比ctrlc,ct…

639. 解碼方法 II

639. 解碼方法 II 一條包含字母 A-Z 的消息通過以下的方式進行了編碼&#xff1a; A -> 1 B -> 2 ... Z -> 26要 解碼 一條已編碼的消息&#xff0c;所有的數字都必須分組&#xff0c;然后按原來的編碼方案反向映射回字母&#xff08;可能存在多種方式&#xff09;。…

[cpyhon源代碼]dict對象原理學習

Cpython 2.7 分支中&#xff0c;dict 對象的源代碼 lookdict 搜索算法 1 static PyDictEntry *2 lookdict(PyDictObject *mp, PyObject *key, register long hash)3 {4 register size_t i;5 register size_t perturb;6 register PyDictEntry *freeslot;7 regis…

熊貓數據集_熊貓邁向數據科學的第一步

熊貓數據集I started learning Data Science like everyone else by creating my first model using some machine learning technique. My first line of code was :通過使用某種機器學習技術創建我的第一個模型&#xff0c;我開始像其他所有人一樣學習數據科學。 我的第一行代…

SQLServer鎖的機制

SQLServer鎖的機制&#xff1a;共享鎖(S)排它鎖(X)更新鎖(U)意向共享 (IS)意向排它 (IX) 意向排它共享 (SIX)架構修改(Sch-M) 架構穩定性(Sch-S)大容量更新&#xff08;BU&#xff09;轉載于:https://www.cnblogs.com/yldIndex/p/8603902.html

你是否具有價值

一個有價值的人往往受歡迎的程度才會高。白天上午花了兩個多小時的時間幫前同事遠程解決了服務器部署時由于防火墻機制問題引起的系統功能失敗的問題。解決完這個問題之后&#xff0c;同事的心情很愉悅&#xff0c;其實我自己的心情也很愉悅&#xff0c;看來人都有幫助別人和被…

為什么選擇做班級管理系統_為什么即使在平衡的班級下準確性也很麻煩

為什么選擇做班級管理系統Accuracy is a go-to metric because it’s highly interpretable and low-cost to evaluate. For this reason, accuracy — perhaps the most simple of machine learning metrics — is (rightfully) commonplace. However, it’s also true that m…

使用Chrome開發者工具調試Android端內網頁(微信,QQ,UC,App內嵌頁等)

使用Chrome開發者工具調試Android端內網頁(微信&#xff0c;QQ&#xff0c;UC&#xff0c;App內嵌頁等) 傳送門轉載于:https://www.cnblogs.com/momozjm/p/9389912.html

517. 超級洗衣機

517. 超級洗衣機 假設有 n 臺超級洗衣機放在同一排上。開始的時候&#xff0c;每臺洗衣機內可能有一定量的衣服&#xff0c;也可能是空的。 在每一步操作中&#xff0c;你可以選擇任意 m (1 < m < n) 臺洗衣機&#xff0c;與此同時將每臺洗衣機的一件衣服送到相鄰的一臺…