ReactNative動畫之Animated初識篇

2021-08-21 14:50:43 字數 2944 閱讀 2010

animated提供了兩種型別的值:

1.animated.value()用於單個值

2.animated.valuexy()用於向量值

animated.value可以繫結到樣式或是其他屬性上,也可以進行插值運算。單個animated.value可以用在任意多個屬性上.

目前animated提供的動畫元件有view,image,text,scrollview;當然我們也可以使用createanimatedcomponent方法來建立自己的動畫元件。

static createanimatedcomponent(component: any)

使得任何乙個react元件支援動畫。用它來建立animated.view等等。

目前animated提供了三種動畫:每種動畫型別都提供了特定的函式曲線,用於控制動畫值從初始值變化到最終值的變化過程:

1.animated.decay()以指定的初始速度開始變化,然後變化速度越來越慢直至停下。

static decay(value: animatedvalue | animatedvaluexy, config: decayanimationconfig)

推動乙個值以乙個初始的速度和乙個衰減係數逐漸變為0。

config引數有以下這些屬性:

velocity: 初始速度。必填。

deceleration: 衰減係數。預設值0.997。

usenativedriver: 使用原生動畫驅動。預設不啟用(false)。

2.animated.spring()彈性動畫

static spring(value: animatedvalue | animatedvaluexy, config: springanimationconfig)

產生乙個基於rebound和origami實現的spring動畫。它會在tovalue值更新的同時跟蹤當前的速度狀態,以確保動畫連貫。可以鏈式呼叫。

config引數有以下這些屬性(注意你不能同時定義bounciness/speed和 tension/friction這兩組,只能指定其中一組):

friction: controls "bounciness"/overshoot. default 7.

tension: controls speed. default 40.

speed: controls speed of the animation. default 12.

bounciness: controls bounciness. default 8.

usenativedriver: 使用原生動畫驅動。預設不啟用(false)。

3.animated.timing()依賴時間的動畫

static timing(value: animatedvalue | animatedvaluexy, config: timinganimationconfig)

推動乙個值按照乙個過渡曲線而隨時間變化。easing模組定義了一大堆曲線,你也可以使用你自己的函式。

config引數有以下這些屬性:

duration: 動畫的持續時間(毫秒)。預設值為500.

easing: easing function to define curve。預設值為easing.inout(easing.ease).

delay: 開始動畫前的延遲時間(毫秒)。預設為0.

usenativedriver: 使用原生動畫驅動。預設不啟用(false)。

大多數情況下應該使用timing(),動畫預設值easeinout。

使用樣例:

constructor(props) 

}

1.常在state中設定乙個動畫初始值

2.在componentdidmount或者其他邏輯處理中開始動畫

componentwillreceiveprops(nextprops,nextstate) ).start(()=>);*/

animated.timing(this.state.bottom,).start(()=>);

}else )

}}

rn動畫還可以以組合函式方式進行:

animated.delay()在給定延遲後開始動畫。

static delay(time: number) #

在指定的延遲之後開始動畫。

animated.parallel()同時啟動多個動畫。

static parallel(animations: array, config?: parallelconfig) #

同時開始乙個動畫陣列裡的全部動畫。預設情況下,如果有任何乙個動畫停止了,其餘的也會被停止。你可以通過stoptogether選項來改變這個效果。

animated.sequence()按順序啟動動畫,等待每乙個動畫完成後再開始下乙個動畫

static sequence(animations: array) #

按順序執行乙個動畫陣列裡的動畫,等待乙個完成後再執行下乙個。如果當前的動畫被中止,後面的動畫則不會繼續執行。

animated.stagger()按照給定的延時間隔,順序並行的啟動動畫。

static stagger(time: number, animations: array) #

乙個動畫陣列,裡面的動畫有可能會同時執行(重疊),不過會以指定的延遲來開始。用來製作拖尾效果非常合適。

react native 金幣彩帶雨下落動畫

安裝yarn add react native animatable庫 主要用到的動畫是移動下落,即translatey,從螢幕頂部下落至底部,同時過程中可以左右搖擺,每次隨機下落。failanimation usenativedriver swinganimation 主要用到的動畫,動畫是可以相...

react native 金幣彩帶雨下落動畫

安裝yarn add react native animatable庫 主要用到的動畫是移動下落,即translatey,從螢幕頂部下落至底部,同時過程中可以左右搖擺,每次隨機下落。failanimation usenativedriver swinganimation 主要用到的動畫,動畫是可以相...

React Native 之布局篇

一.flex布局 什麼是flex布局?布局的傳統解決方案,是基於盒子模型,依賴display屬性 position屬性 float屬性,這種布局方式對於特殊布局非常不方便,比如,垂直居中就不好實現.2009年,w3c提出的flex布局,即彈性布局,用來為盒子模型提供最大的靈活性,任何乙個容器都可以指...