我們的設計如是說:
Lottie的json動畫,優缺點有
優點:
1、開發成本低,動畫的還原度高。設計師導出 json 文件后,交付開發。原本要1天甚至更久的動畫實現,現在只要不到一小時甚至更少時間了。
2、支持服務端 URL 方式創建。所以可以通過服務端配置 json 文件,隨時替換客戶端的動畫,不用通過發版本就可以做到了。比如 app 啟動動畫可以根據活動需要進行變換了。
3、性能提高,可以替代原來需要使用幀圖完成的動畫。節省了客戶端的空間和加載的內存。
4、跨平台,iOS、安卓平台可以使用一套文件。省時省力,動畫一致。不用設計師跑去兩邊去跟着微調確認了。
5、支持轉場動畫。 PresentViewController/DismissViewController 時可以做轉場效果。
不足:
1、對一些AE的屬性支持不夠完全(例如:表達式,中繼器)
詳情見官網:https://github.com/airbnb/lottie-ios
2、對系統平台版本限制,如 iOS8 及以上,安卓 API14 及以上。
3、對可交互的動畫暫時還不行,主要是以播放類型動畫(需要開發自己進行交互編譯控制)。
它最大的優點是提供了一套完整的跨平台的動畫實現工作流。
其次,相對於類似的實現方案GIF、手寫動畫、幀動畫而言,這個方案更為輕量,性能和存儲上都更佳。
從代碼上看,Android 端的實現是基於 Drawable、iOS 端是基於 Layer —— 最終都是對 canvas 的操作,中間除去解析 json 外,基本無耗費性能的行為。(官方文檔有提到,masks 和 mattes 動畫較為耗費性能,原因是需要額外的 Bitmap 輔助,這點需注意)
而存儲上,動畫由 json 文件描述,占用空間不多。
也是因為動畫由 json 文件描述,所以它的第三個優點是動畫的更新及其方便。在之前,假如我們要完成動畫動態更新需求,要么使用上述所說的 GIF、幀動畫等方案,要么就自定義動畫描述文件或用笨重的xml來完成動畫。那么現在用 json 文件,簡直再方便不過了。
三. 仍然存在的問題
1. Bodymovin 插件待完善,仍然有部分 AE 效果無法成功導出;
2. Lottie 對 json 文件的支持待完善,目前有部分能成功導出成 json 文件的效果在移動端上無法很好的展現;
3. 目前不支持文字,所有文字必須轉成矢量圖才能正常展現動畫;
4. 動畫無法被編輯,即移動端無法更改遠端下載到本地的動畫;
5. 文檔需要跟進。。現在的 json 文件內容看的好蛋疼。。根本沒法開開心心提 PR;