1. 程式人生 > >《Flutter 動畫系列一》25種動畫元件超全總結

《Flutter 動畫系列一》25種動畫元件超全總結

![](https://img2020.cnblogs.com/other/467322/202004/467322-20200402195444122-1705787188.png) ## 動畫執行的原理 任何程式的動畫原理都是一樣的,即:視覺暫留,視覺暫留又叫視覺暫停,人眼在觀察景物時,光訊號傳入大腦神經,需經過一段短暫的時間,光的作用結束後,視覺形象並不立即消失,這種殘留的視覺稱“後像”,視覺的這一現象則被稱為“視覺暫留”。 電影就是依靠視覺暫留,在感官上電影是連續的。使動畫有流暢的感覺,幀率至少要達到24幀,即:每秒播放24個影象,因此動畫有一個非常關鍵的效能引數FPS(Frame Per Second),即幀率,達到24fps,畫面就比較流暢了,Flutter的FPS理論上可以達到60fps,超過48fps,將會感到絲滑般的順暢。 ## Flutter動畫系統 為了方便開發者進行動畫的開發,Flutter將動畫系統進行封裝,抽象出4個概念:Animation、Curve、AnimationController、Tween。 - Animation:Flutter動畫中的核心類,此類是抽象類,通常情況下使用其子類:AnimationController,可以獲取當前動畫的狀態和值,也可以新增其狀態變化監聽和值變化監聽。 - Curve:決定動畫執行的曲線,和Android中的Interpolator(差值器)是一樣的,負責控制動畫變化的速率,系統已經封裝了10多種動畫曲線,詳見`Curves`類。 - AnimationController:動畫控制器,控制動畫的開始、停止。繼承自Animation。 - Tween:對映生成不同範圍的值,AnimationController的動畫值是double型別的,如果需要顏色的變化,Tween可以完成此工作。 將Container控制元件的大小由100變為300,程式碼如下: ```dart class AnimationDemo extends StatefulWidget { @override State