成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

站在Android開發的角度,聊聊Airbnb的Lottie!!!

移動開發 Android
你有沒有遇上一些設計師,對一些酷炫的動畫著迷,喜歡根據場景設計出可愛而流暢的動畫。但是在實際工作中,哪怕開發人員也覺得這些動畫非常的棒,可我們知道,越是定制化的動畫,實現起來將會越麻煩和耗時。這有時候就會引發設計師和工程師的矛盾。

一、前言

你有沒有遇上一些設計師,對一些酷炫的動畫著迷,喜歡根據場景設計出可愛而流暢的動畫。但是在實際工作中,哪怕開發人員也覺得這些動畫非常的棒,可我們知道,越是定制化的動畫,實現起來將會越麻煩和耗時。這有時候就會引發設計師和工程師的矛盾。

[[213433]]

而自從 Airbnb 開發出 Lottie 之后,設計師只需要使用 After Effects 設計出***的動畫,然后通過 Bodymovin 插件進行簡單的轉換和導出成 JSON,***工程師將 JSON 放入 App 項目中,就可以將動畫 100% 還原到你的產品中。

二、為什么要用 Lottie?

Lottie 是一套跨平臺的完整解決方案,設計師只需要使用 After Effectes 設計出動畫之后,使用 Lottic 提供的 Bodymovin 將設計好的動畫導出成 JSON 格式,就可以直接運用在 iOS、Android 和 React Native之上,無需關心中間的實現細節。

 

站在Android開發的角度,聊聊Airbnb的Lottie!!!

對于不同的工作角色,Lottie 給你帶來的都是更簡潔的工作流。

  • 如果你是 Designer,你可以充分發揮你的動畫設計天分,因為它們最終會被 100% 的還原。
  • 如果你是 Engineer,你可以通過簡單的導入和有限的代碼,就可以實現設計師要求的動畫,并且 Lottie 并不臃腫。
  • 如果你是 Product Manager,你的產品將具有更人性化的酷炫動畫,而這并不會帶來開發周期的延長。

整體來說,Lottie 是一個優秀的項目,它能解決很多關于動畫上的溝通問題和提供解決方案。可它依然有一些不足的地方:

  • 系統版本限制,Android(Api 14+) 和 iOS(>=8.0) 都有不同的版本限制。
  • 有一些交互動畫,不被支持,哪怕導出了也無法被正常執行。
  • Bodymovin 插件還有待完善,有些 After Effects 實現的效果,無法被正常導出。

而今天,我們站在一個 Android 工程師的角度,來看看如何使用 Lottie。這里只聊 Android 下使用 Lottie,如何編輯動畫,如何安裝插件,這些都是設計師需要關心的,對我們而言,拿到的就是一個 Lottie 動畫的 JSON 文件,我們只需要關心如何使用它。

三、在 Android 下使用 Lottie

3.1 開始使用

Lottie 可以支持并且也是僅支持 Gradle 進行構建配置,因此,我們只需要在 build.gradle 文件中進行簡單的導入就好了。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

最簡單的使用方式是直接使用 LottieAnimationView ,LottieAnimationView 直接繼承自 AppCompatImageView 。

只需要提前將動畫的 JSON 文件,放在 app/src/main/assets 目錄下,在 Layout 布局文件中,可以直接使用。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

它支持幾個屬性:

  • lottie_fileName : 播放動畫的 json 文件。
  • lottie_loop:是否循環播放,默認為 false。
  • lottie_autoPlay:是否加載完成之后,自動播放,默認為 false。

當然,你也可以使用邏輯代碼去控制 Lottie 動畫的播放,使用起來也非常的簡單。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

這個方法會去加載 JSON 文件,并解析動畫,之后在子線程中開始異步渲染動畫。

3.2 加載其他來源的 Lottie

我們的 Lottie 動畫的 JSON 可以從任何地方加載,這里就需要使用到 LottieComposition.Factory 這個類去加載不同來源的 JSON 文件。在這個 Factory 中,提供了很多 fromXxx() 的方法,用于加載動畫的 JSON 。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

一個比較常用的方式,例如我們從一個 JSONObject 中,加載 Lottie 動畫。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

fromXxx() 方法,會返回一個 Cancellable 接口,標識它是一個可被取消的方法,如果有需要,可以調用它的 cancel() 方法。

Lottie 的動畫加載器,看著有很多 fromXxx() 方法,其實最終指向的都是 FileCompositionLoader 和 JsonCompositionLoader ,這兩個加載器,都是繼承自 AsyncTask 的,所以 cancel() 方法其實就是取消的這個 AsyncTask 的執行,有興趣的可以查閱這方面的源碼。

3.3 Lottie 動畫的監聽

Lottie 作為一個動畫,也是提供了一些監聽器用于監聽動畫執行的情況的。

例如,想要監聽動畫的開始結束等狀態,可以使用 addAnimatorListener() 方法,它接受一個 Animator.AnimatorListener() 接口,我們只需要實現對應的方法就行了。

而如果我們想要監聽 Lottie 動畫的中間狀態,例如執行的進度等等,可以使用 addAnimatorUpdateListener() 。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

 

控制進度非常的有用,因為有一些動畫,例如就是一個進度條的動畫,控制進度就顯得非常重要了。

3.4 控制 Lottie 動畫執行的速度和時間

Lottie 動畫,在導出成 JSON 之后,其實動畫執行的速度和時長,都是已經固定了的。所以如果想要修改這兩個參數,除了麻煩設計師使用 After Effects 重新修改之后再導出之外,還可以使用 ValueAniamtor 配合 setProgress() 方法來實現。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

 

3.5 直接使用 LottieDrawable

LottieAnimationView 其實內部使用的是 LottieDrawable ,如果有需要你也可以直接使用它。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

 

3.6 動畫里有圖片

有時候,我們的動畫不僅僅是畫上去的,還有可能會使用到一些圖片資源。如果遇到這樣的情況,同時使用的是本地資源圖片,可以使用 setImageAssetsFolder() 設置一個 Lottie 動畫中使用到的圖片文件夾的相對路徑,并確保他們和 bodymovin 插件輸出的用到的圖片文件名稱,保持不變。

如果你需要加載圖片,你使用 LottieAnimationView 你可以很省心,不需要額外處理,但是如果你直接使用 LottieDrawable 的話,使用完成之后,需要手動調用 recycleBitmaps() 進行資源的回收。

而假如我們需要自己配置圖片的位置,例如是從網絡中下載的圖片,可以使用一個 ImageAssetDelegate 來支持。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

四、查缺補漏

Lottie 官方提供了一個 App,可以用于加載一個 Lottie 的動畫,在排查問題方面,非常有用,建議如果使用 Lottie 的話,***安裝把玩一下。Lottie.Apk 需要去 Google Play 上下載,不方便下載的可以在公眾號回復 “lottieapk”,直接下載 Apk 文件。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

4.1 性能

既然是動畫,肯定有性能的要求。可以借助 Lottie App,來看看動畫執行的性能問題,直接看效果就好了。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

4.2 故障排除

有時候,設計師設計的動畫,有些效果是無法被 Lottie 還原的。遇到這樣的情況,可以在代碼中調用 getWarning() 獲取動畫的警告詳細輸出。

還有一個方法是直接在官方提供的 Lottie.App 中,去加載設計師提供的 JSON 文件,如果出錯,右上角會有一個 warning 的標記,點擊可以查看到詳情。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

五、動畫資源

如果你因為各種原因,沒有辦法專門由一個設計師來為你的 App 定制動畫效果,你也可以嘗試找找線上公開的一些 Lottie 的動畫效果,這里推薦使用 LottieFiles 這個網站。

  • LottieFiles:
  • https://www.lottiefiles.com/

LottieFiles 提供了很多小的動畫效果,并且可以直接下載成 JSON ,或者生成二維碼,可供 Lottie App 掃描看效果。

站在Android開發的角度,聊聊Airbnb的Lottie!!!

LottieFiles 上的效果,雖然非常的好用,唯一的問題就是基本上,我們作為工程師是無法編輯的,所以只能去套用效果。

六、小結

Android 使用 Lottie 的所有細節,本文已經說清楚了,還有細節需要了解,就只能閱讀文檔,或者查看官方文檔了。

  • Lottie Github:
  • https://github.com/airbnb/lot…
  • Lottie 官方文檔:
  • http://airbnb.io/lottie/

關于 Lottie ,你在使用的過程中,有沒有遇到什么坑?可以在留言區留言一起討論。

責任編輯:未麗燕 來源: 承香墨影公眾號
相關推薦

2017-12-15 14:20:24

AndroidAirbnbLottie

2017-02-06 14:40:55

AirbnbLottieGif

2023-02-03 09:52:10

開發者框架GoFrame

2011-06-16 17:49:00

SEO

2011-08-08 09:32:32

Ubuntu TweaLinux

2015-03-24 11:38:09

2024-10-15 08:37:08

2017-12-01 19:02:33

Airbnb大數據平臺

2021-02-22 09:30:09

go開發環境桌面系統

2020-10-21 08:38:47

React源碼

2017-11-14 09:03:36

Spring Clou架構演進

2017-11-13 15:48:36

架構Spring Clou演進

2022-03-29 19:23:44

軟件開發RTOS

2017-09-06 16:40:51

機器學習Airbnb預測房價

2013-09-16 16:01:23

Android開發代碼

2014-12-09 14:07:50

2012-08-06 09:40:36

DIV

2022-09-14 10:09:35

iPhone 14靈動島設計

2011-06-08 14:24:35

Airbnb移動互聯網

2013-09-02 11:33:38

百度
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: caoporn地址 | 亚洲国产成人精品女人久久久 | www.久久久久久久久久久久 | 亚洲一区二区三区桃乃木香奈 | 91久久精品日日躁夜夜躁国产 | 国产成人免费观看 | 久久久91精品国产一区二区精品 | 伊人久久综合 | 成人在线中文字幕 | 在线观看精品视频网站 | 久久久久国产视频 | 国产亚洲欧美在线 | 91国产精品在线 | 午夜手机在线视频 | 视频一区二区中文字幕 | 99亚洲精品 | 在线观看国产www | 亚洲性爰 | 伊人99 | 91在线 | 欧美日韩在线一区二区三区 | 免费黄色的视频 | 国产日韩中文字幕 | 超碰人人91 | 久久精品小视频 | 在线观看国产视频 | 91大神在线看 | 亚洲精品黄色 | 国产精品一区二区三区在线 | 亚洲视频在线观看免费 | 亚洲成人精品在线 | 亚州春色 | 久久精品99 | 狠狠ri | 国产精品国产 | 亚洲高清在线视频 | 亚洲啪啪 | 日韩精品一区二区三区在线播放 | 亚洲在线日韩 | 欧美精品久久久 | 欧美成视频在线观看 |