Lottie-React Native翻譯

Lottie應用于React Native、iOS和Android

Lottie組件,應用于React Native(AndroidiOS)

Lottie 是一個可應用于Andriod和iOS的動畫庫,它通過bodymovin插件來解析Adobe After Effects 動畫并導出為json文件,并通過手機端原生方式渲染出來。

這是前所未有的方式,設計師可以創(chuàng)作并且運行優(yōu)美的動畫而不需要工程師煞費苦心地通過手動調(diào)整的方式來重現(xiàn)動畫。有人說一張圖片可以頂?shù)纳?000個字,那么下面就算13000個字了:






所有的動畫都是通過After Effects創(chuàng)作出來,用bodymovin插件導出,不需要任何額外的工作就可以以原生的方式渲染出來。

相關(guān)的項目文件

這個項目只是用代碼對Lottie進行包裝并暴露給React Native。你可以從各自對應的庫中找到解析和渲染的代碼。
Lottie for iOS
Lottie for Android

安裝

你可以通過安裝node模塊來開始lottie:
npm i --save lottie-react-native
如果你在iOS中使用CocoaPods的話,你可以在Podfile中添加下面的代碼:

pod 'lottie-react-native', :path => '../node_modules/lottie-react-native'

如果你在iOS中沒有用CocoaPods的話,你可以用react-native link:

react-native link lottie-ios
react-native link lottie-react-native/

針對Android系統(tǒng),你也可以用react-native link:

react-native link lottie-react-native

如果對此有任何困惑的話,請?zhí)砑觟ssue。

基礎的用法:

查看所有組件的API
Lottie 的動畫進度可以通過改變Animated的Value來控制:

import React from 'react';
import { Animated } from 'react-native';
import Animation from 'lottie-react-native';

export default class BasicExample extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      progress: new Animated.Value(0),
    };
  }

  componentDidMount() {
    Animated.timing(this.state.progress, {
      toValue: 1,
      duration: 5000,
    }).start();
  }

  render() {
    return (
      <Animation
        style={{
          width: 200,
          height: 200,
        }}
        source={require('../path/to/animation.json')}
        progress={this.state.progress}
      />
    );
  }
}

此外,還有一些API有時候會更簡單:

import React from 'react';
import Animation from 'lottie-react-native';

export default class BasicExample extends React.Component {
  componentDidMount() {
    this.animation.play();
  }

  render() {
    return (
      <Animation
        ref={animation => { this.animation = animation; }}
        style={{
          width: 200,
          height: 200,
        }}
        source={require('../path/to/animation.json')}
      />
    );
  }
}

運行示例工程

你可以通過以下命令來檢出示例工程:

  1. 克隆倉庫:git clone https://github.com/airbnb/lottie-react-native.git
  2. 打開目錄:cd lottie-react-native并且安裝:npm install
  3. 通過npm start 啟動packager
  4. 在另一個命令行窗口,按如下步驟操作:

針對iOS:

  1. 如果你沒有用CocoaPods安裝,就執(zhí)行sudo gem install cocoapods
  2. 安裝pods:npm run build:pods
  3. 運行示例代碼:npm run run:ios

針對Android:

  1. 運行示例代碼:npm run run:android

故障排查

如果你在運行pod install時出現(xiàn):

[!] Unable to find a specification for `lottie-ios` 

那么執(zhí)行pod repo update 再嘗試

替代方案

  1. 手動地創(chuàng)建動畫。手動創(chuàng)建動畫對于設計師以及iOS、Android工程師而言意味著付出巨額的時間。通常很難,甚至不可能證明花費這么多時間來獲得動畫是正確的。
  2. Facebook Keyframes。 Keyframes是專門用來構(gòu)建用戶界面的, 是FaceBook的一個很棒,很新的庫。但是Keyframes不支持一些Lottie所能支持的特性,比如: 遮罩,蒙版,裁切路徑,虛線樣式還有很多。
  3. Gifs。Gifs 占用的大小是bodymovin生成的JSON大小的2倍還多,并且渲染的尺寸是固定的,并不能放大來適應更大更高分辨率的屏幕。
  4. Png序列楨動畫。 Png序列楨動畫 甚至比gifs更糟糕,它們的文件大小通常是 bodymovin json文件大小的30-50倍,并且也不能被放大。

為什么叫Lottie?

Lottie是以德國剪影動畫先驅(qū)Lotte Reiniger(洛特·雷妮格)的名字命名的。 她最出名的作品是《阿基米德王子歷險記》 (1926) – 世界上第一部長篇動畫電影。 比華爾特·迪士尼的長篇動畫電影——《白雪公主與七個小矮人》 (1937) 還要早了10年。The art of Lotte Reineger

貢獻

請查看:Contributors Guide

軟件許可證書:

Apache-2.0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

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