lottie動畫庫簡介

Lottie
是Airbnb最近開源了一個名叫Lottie的動畫庫,它能夠同時支持iOS,Android與ReactNative的動畫庫。具體內(nèi)容可以見github。
通過安裝在AE上的一款名叫bodymovin的插件,能夠?qū)E中的動畫工程文件轉(zhuǎn)換成通用的json格式描述文件,bodymovin插件本身是用于在網(wǎng)頁上呈現(xiàn)各種AE效果的一個開源庫,lottie做的事情就是實現(xiàn)了一個能夠在不同移動端平臺上呈現(xiàn)AE動畫的方式.
在此不多做解釋可以去github看使用以及支持。
github地址:https://github.com/airbnb/lottie-ios

本文重點在解析動畫以及動畫庫。
1) 首先是動畫定義
每幀圖像都是由人工或計算機產(chǎn)生的。根據(jù)人眼的特性,用15幀/秒~20幀/秒的以上速度順序地播放靜止圖像幀纠脾,產(chǎn)生運動的感覺的圖像。
2)動畫形成原理:
是因為人眼有視覺暫留的特性所謂視覺暫留就是在看到一個物體后即時該物體快速消失也還是會在眼中留下一定時間的持續(xù)影像蜕青。

<1>下面我們了解幾個名詞(對沒錯苟蹈,讓你自己去搞明白,我就不和你說了)
1)FPS ( Frames Per Second)
2)逐幀(Frame By Frame)
3)關(guān)鍵幀(Keyframe Animation)

3)以iOS為例談一談Core Animation:


Core Animation結(jié)構(gòu)

?? 核心動畫類有以下分類:提供顯示內(nèi)容的圖層類右核。動畫和計時類慧脱。布局和約束類。事務(wù)類贺喝,在原子更新的時候組合圖層類菱鸥。
圖層類是核心動畫的核心基礎(chǔ),它提供了一套抽象的概念躏鱼,CALayer 是整個圖層類的基礎(chǔ)氮采,它是所 有核心動畫圖層類的父類。 和視圖類(NSView 或 UIView)一樣,CALayer 有自己的父圖層類,同時也擁有自 己子圖層類的集合染苛,它們構(gòu)成了一個圖層樹的層次結(jié)構(gòu)鹊漠。圖層繪制類似視圖一樣自底 向上,并指定其幾何形狀相對他們 superlayer,創(chuàng)建一個相對的局部坐標(biāo)系躯概。然而圖 層類通過合并變換矩陣允許你旋轉(zhuǎn)登钥、偏移、拉伸對應(yīng)的圖層內(nèi)容楞陷。
?? 核心動畫的動畫類使用基本的動畫和關(guān)鍵幀動畫把圖層的內(nèi)容和選取的屬性動 畫的顯示出來。所有核心動畫的動畫類都是從 CAAnimation 類繼承而來茉唉。CAAnimation 實現(xiàn)了 CAMediaTiming 協(xié)議固蛾,提供了動畫的持續(xù)時間,速度度陆,和重復(fù)計數(shù)艾凯。 (關(guān)于CAMediaTiming可以看圖)


Core Animation classes and protocol

CAAnimation 也實現(xiàn)了 CAAction 協(xié)議。該協(xié)議為圖層觸發(fā)一個動畫動作提供了提供 標(biāo)準(zhǔn)化響應(yīng)懂傀。
動畫類同時定義了一個使用貝塞爾曲線來描述動畫改變的時間函數(shù)趾诗。例如,一個 勻速時間函數(shù)(linear timing function)在動畫的整個生命周期里面一直保持速度不變蹬蚁, 而漸緩時間函數(shù)(ease-out timing function)則在動畫接近其生命周期的時候減慢速度恃泪。
核心動畫額外提供了一系列抽象的和細(xì)化的動畫類,比如:
CATransition 提供了一個圖層變化的過渡效果犀斋,它能影響圖層的整個內(nèi)容贝乎。 動畫進(jìn)行的時候淡入淡出(fade)、推(push)叽粹、顯露(reveal)圖層的內(nèi)容览效。這些過渡效 果可以擴展到你自己定制的 Core Image 濾鏡。
?? CAAnimationGroup 允許一系列動畫效果組合在一起虫几,并行顯示動畫锤灿。
?? CAPropertyAnimation 是一個抽象的子類,它支持動畫的顯示圖層的關(guān)鍵路 徑中指定的屬性
?? CABasicAnimation 簡單的為圖層的屬性提供修改辆脸。 CAKeyframeAnimation 支持關(guān)鍵幀動畫但校,你可以指定的圖層屬性的關(guān)鍵路徑
?? 動畫,包括動畫的每個階段的價值啡氢,以及關(guān)鍵幀時間和計時功能的一系列值始腾。在 動畫運行是,每個值被特定的插入值替代空执。
?? CATransaction 是核心動畫 里面負(fù)責(zé)協(xié)調(diào)多個動畫原子更新顯示操作浪箭。事務(wù)支持嵌套使用。 核心動畫支持兩種事務(wù):隱式事務(wù)和顯式事務(wù)辨绊。在圖層的動畫屬性被一個線程修 改奶栖,同時該線程下次迭代的時候自動提交該修改的時候隱式事務(wù)自動創(chuàng)建。顯式事務(wù) 發(fā)生在程序在修改動畫屬性之前給 CATransaction 發(fā)送了一個開始消息,在動畫屬性 修改之后提交該消息宣鄙。
<2> Lottie庫介紹袍镀。
1)類結(jié)構(gòu)

Lottie類結(jié)構(gòu)

2)流程概述
里面有兩點簡單說一下。
一冻晤、cache是最少使用原則苇羡,利用NSDictionary和NSarray實現(xiàn),最多存50個json數(shù)組
二鼻弧、是動畫合成過程设江,解析json數(shù)組每個數(shù)組生成相應(yīng)的layer組合layer生成完整動畫。


流程概述.png

<3>性能測試
1)CPU波動和幀動畫對比會差一些


CPU波動

2)內(nèi)存占用會有一定優(yōu)勢


內(nèi)存占用

3)解析普通動畫耗時大概在0.03秒左右攘轩,比較理想叉存。

所以綜上 Lottie可用性還是不錯的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末度帮,一起剝皮案震驚了整個濱河市歼捏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌笨篷,老刑警劉巖瞳秽,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異率翅,居然都是意外死亡寂诱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門安聘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痰洒,“玉大人,你說我怎么就攤上這事浴韭∏鹩鳎” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵念颈,是天一觀的道長泉粉。 經(jīng)常有香客問我,道長榴芳,這世上最難降的妖魔是什么嗡靡? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮窟感,結(jié)果婚禮上讨彼,老公的妹妹穿的比我還像新娘。我一直安慰自己柿祈,他們只是感情好哈误,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布哩至。 她就那樣靜靜地躺著,像睡著了一般蜜自。 火紅的嫁衣襯著肌膚如雪菩貌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天重荠,我揣著相機與錄音箭阶,去河邊找鬼。 笑死戈鲁,一個胖子當(dāng)著我的面吹牛仇参,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荞彼,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冈敛,長吁一口氣:“原來是場噩夢啊……” “哼待笑!你這毒婦竟也來了鸣皂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暮蹂,失蹤者是張志新(化名)和其女友劉穎寞缝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仰泻,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡荆陆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了集侯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片被啼。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棠枉,靈堂內(nèi)的尸體忽然破棺而出浓体,到底是詐尸還是另有隱情,我是刑警寧澤辈讶,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布命浴,位于F島的核電站,受9級特大地震影響贱除,放射性物質(zhì)發(fā)生泄漏生闲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一月幌、第九天 我趴在偏房一處隱蔽的房頂上張望碍讯。 院中可真熱鬧,春花似錦扯躺、人聲如沸冲茸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轴术。三九已至难衰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逗栽,已是汗流浹背盖袭。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彼宠,地道東北人鳄虱。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像凭峡,于是被迫代替她去往敵國和親拙已。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果摧冀,實現(xiàn)這些動畫的過程并不復(fù)雜倍踪,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,495評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果索昂,實現(xiàn)這些動畫的過程并不復(fù)雜建车,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,113評論 5 13
  • 書寫的很好椒惨,翻譯的也棒缤至!感謝譯者,感謝感謝康谆! iOS-Core-Animation-Advanced-Techni...
    錢噓噓閱讀 2,298評論 0 6
  • Core Animation編程指南 關(guān)于Core Animation Core Animation自身并不是一個...
    錢噓噓閱讀 1,169評論 0 12
  • 顯式動畫 如果想讓事情變得順利沃暗,只有靠自己 -- 夏爾·紀(jì)堯姆 上一章介紹了隱式動畫的概念月洛。隱式動畫是iOS平臺上...
    方圓幾度閱讀 510評論 0 0