該文翻譯自:[https://medium.com/@Jpoliachik/react-native-s-layoutanimation-is-awesome-4a4d317afd3e#.6syi2v6yh](https://medium.com/@Jpoliachik/react-native-s-layoutanimation-is-awesome-4a4d317afd3e#.6syi2v6yh)
? ? ???剛創建的React Native技術交流1群(282693535),React Native交流2群:(496601483),請不要重復加群!歡迎各位大牛,React Native技術愛好者加入交流!同時博客右側歡迎微信掃描關注訂閱號,移動技術干貨,精彩文章技術推送!?
? ? ?如果你是用React Native進行開發,然而還沒有嘗試過使用LayoutAnimation的話,那么你就太out啦~
??????做為一個iOS開發者突然使用ReactNative進行開發,我之前非常擔心會失去iOS中CoreAnimation的很多特性以及使用便利。UIView的動畫是非常不錯的。在React?Native中,我們只需要設置好期望的View(視圖)屬性,然后React Native的Animated([具體點擊進入](https://facebook.github.io/react-native/docs/animated.html#content)) API就會達到原生開發中的類似動畫效果了。但是我們需要給每一個期望的動畫設置一個狀態屬性。對于復雜的視圖來講這樣設置整個代碼會很快變得一團糟~
???????打開LayoutAnimation([點擊進入](https://facebook.github.io/react-native/docs/layoutanimation.html#content))的文檔,千萬不要對于該簡短的文檔感到吃驚哦,其實用起來確實很簡單。
???????對于布局中的多個布局變化的功能,一行代碼就可以搞定了。添加如下設置:允許視圖重新渲染以及讓LayoutAnimation為你處理所有的插值(變化)。對于大的并且復雜的視圖來講,這是非常有用強大的。
???????下面演示一個例子:在該例子中,我這邊有一個三種可能的狀態的復雜視圖。下面根據三種按鈕的選中的'index'索引來進行分別渲染不同的高度,寬度以及item視圖的數量。該下面狀態效果變化的代碼沒有任何動畫。具體實現的效果運行如下:

??????我們發現該上面是沒有任何動畫效果的,現在我們來通過添加LayoutAnimation實現狀態改變的時候視圖動畫效果,下面的一行代碼是非常必要的.
~~~
1. LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
~~~
該代碼設置了spring的動畫效果[注意].spring是該定義的動畫效果的一種類型
如上代碼設置之后,該對于任何布局變化的時候都會使用'spring'動畫類型來進行渲染呈現。具體效果如下:

??????看到這個效果之后,大家是不是覺的非常性感呢?
????【注意】LayoutAnimation只對于布局的創建和更新事件才起作用,然而刪除事件是不支持的。看上面的效果,當黃色的小圓圈刪除的時候是沒有任何動畫的。
???????LayoutAnimation有以下三種動畫效果類型:
1. caseInEaseOut
2. linear
3. spring
???????大家可以設置不同的動畫類型來看效果,或者可以進行查看源代碼進行學習([源代碼點擊進入](https://github.com/facebook/react-native/blob/master/Libraries/LayoutAnimation/LayoutAnimation.js))
???????工作特點:LayoutAnimation運行原理通過指定的視圖計算動畫期望的位置,底層通過原生動畫框架(CoreAnimation on iOS)來完成動畫效果。幀動畫可以支持不透明度以及縮放屬性。不過我們可以添加一些其他的屬性例如:backgroundColor和transformations
??????【注】這邊沒有去分析Android源代碼,所以這邊對于Android平臺可能會有所不同。
???????LayoutAnimation在React?Native中絕對是很好的實現動畫效果,完成可以和原生體驗相媲美,非常值得大家一試。本文章實例完成代碼[請點擊查看](https://gist.github.com/Jpoliachik/0dd83689646d1051b0bc)
? ? ? ?今天我們主要翻譯一篇國外的關于React Native的LayoutAnimation介紹的文章。大家有問題可以加一下群React Native技術交流群(282693535)或者底下進行回復一下。
? ? ? ?尊重翻譯,轉載請注明:From Sky丶清([http://blog.csdn.net/developer_jiangqq](http://blog.csdn.net/developer_jiangqq)) 侵權必究!
? ? ? ?關注我的訂閱號(codedev123),每天分享移動開發技術(Android/IOS),項目管理以及博客文章!(歡迎關注,第一時間推送精彩文章)

? ? ?關注我的微博,可以獲得更多精彩內容
? ? ??[](http://weibo.com/u/1855428195?s=6uyXnP)
- 前言
- React Native For Android環境配置以及第一個實例(1)
- React Native開發IDE安裝及配置(2)
- React Native應用設備運行(Running)以及調試(Debugging)(3)
- React Native移植原生Android項目(4)
- React Native進行簽名打包成Apk(5)
- React Native庫版本升級(Upgrading)與降級講解(6)
- React Native控件之View視圖講解(7)
- React Native配置運行官方例子-初學者的福音(8)
- React Native控件之Text組件講解(9)
- React Native控件之Image組件講解與美團首頁頂部效果實例(10)
- TextInput組件講解與QQ登錄界面實現(11)
- ProgressBarAndroid進度條講解(12)
- DrawerLayoutAndroid抽屜導航切換組件講解(13)
- ScrollView組件講解(14)
- ToolbarAndroid工具欄控件講解以及使用(15)
- Switch開關與Picker選擇器組件講解以及使用(16)
- ViewPagerAndroid講解以及美團首頁頂部效果實例(17)
- Touchable*系列組件詳解(18)
- React Native專題文章講解,不斷更新中.....
- ListView組件講解以及最齊全實例(19)
- 超詳細Windows版本編譯運行React Native官方實例UIExplorer項目(多圖慎入)
- React Native超棒的LayoutAnimation(布局動畫)
- PullToRefreshViewAndroid下拉刷新組件講解(20)
- RefreshControl組件詳解(21)
- WebView組件詳解以及實例使用(22)