React Native超棒的LayoutAnimation(布局動畫)

hvangzg 8年前發布 | 15K 次閱讀 JavaScript開發 React Native

來自: http://blog.csdn.net/developer_jiangqq/article/details/50662430

該文翻譯自 : https://medium.com/@Jpoliachik/react-native-s-layoutanimation-is-awesome-4a4d317afd3e#.6syi2v6yh

      剛創建的 React Native 技術交流群 ( 282693535 ), 歡迎各位大牛 ,React Native 技術愛好者加入交流 ! 同時博客右側歡迎微信掃描關注訂閱號 , 移動技術干貨 , 精彩文章技術推送 !  

如果你是用 React Native 進行開發,然而還沒有嘗試過使用Layout Animation 的話,那么你就太 out ~

做為一個 iOS 開發者突然使用 ReactNative 進行開發,我之前非常擔心會失去 iO S CoreAnimation 的很多特性以及使用便利。UIView的動畫是非常不錯的。在React Native 中,我們只需要設置好期望的View ( 視圖 ) 屬性,然后 React Native 的An imated( 具體點擊進入 ) API 就會達到原生開發中的類似動畫效果了。但是我們需要給每一個期望的動畫設置一個狀態屬性。對于復雜的視圖來講這樣設置整個代碼會很快變得一團糟 ~

打開 LayoutAnimation( 點擊進入 ) 的文檔 , 千萬不要對于該簡短的文檔感到吃驚哦,其實用起來確實很簡單。

對于布局中的多個布局變化的功能,一行代碼就可以搞定了。添加如下設置 : 允許視圖重新渲染以及讓Layout Animation 為你處理所有的插值 ( 變化 ) 。對于大的并且復雜的視圖來講,這是非常有用強大的。

下面演示一個例子 : 在該例子中,我這邊有一個三種可能的狀態的復雜視圖。下面根據三種按鈕的選中的 'index' 索引來進行分別渲染不同的高度,寬度以及item視圖的數量。該下面狀態效果變化的代碼沒有任何動畫。具體實現的效果運行如下 :

我們發現該上面是沒有任何動畫效果的,現在我們來通過添加 LayoutAnimation 實現狀態改變的時候視圖動畫效果,下面的一行代碼是非常必要的 .

LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);

該代碼設置了 spring 的動畫效果 [ 注意 ]. sprin g 是該定義的動畫效果的一種類型

如上代碼設置之后,該對于任何布局變化的時候都會使用 'spring' 動畫類型來進行渲染呈現。具體效果如下 :

看到這個效果之后,大家是不是覺的非常性感呢?

【注意】Layout An imation 只對于布局的創建和更新事件才起作用,然而刪除事件是不支持的。看上面的效果,當黃色的小圓圈刪除的時候是沒有任何動畫的。

Layout Animation 有以下三種動畫效果類型 :

  1. caseInEaseOut
  2. linear
  3. spring

大家可以設置不同的動畫類型來看效果,或者可以進行查看源代碼進行學習 ( 源代碼點擊進入 )

工作特點 :LayoutAnimation 運行原理通過指定的視圖計算動畫期望的位置,底層通過原生動畫框架 (CoreAnimation on iOS) 來完成動畫效果。幀動畫可以支持不透明度以及縮放屬性。不過我們可以添加一些其他的屬性例如 : back groundColor transformations

【注】這邊沒有去分析Android源代碼,所以這邊對于Android平臺可能會有所不同。

Layout Animation React  Native 中絕對是很好的實現動畫效果,完成可以和原生體驗相媲美,非常值得大家一試。本文章實例完成代碼 請點擊查看

今天我們主要翻譯一篇國外的關于React Native的LayoutAnimation介紹的文章。大家有問題可以加一下群React Native技術交流群( 282693535 )或者底下進行回復一下。

尊重翻譯,轉載請注明:From Sky丶清( http://blog.csdn.net/developer_jiangqq ) 侵權必究!

關注我的訂閱號(codedev123),每天分享移動開發技術(Android/IOS),項目管理以及博客文章!(歡迎關注,第一時間推送精彩文章)

關注我的微博,可以獲得更多精彩內容

</div>

 本文由用戶 hvangzg 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!