這篇文章主要講解了“怎么選擇Flutter動畫控件”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么選擇Flutter動畫控件”吧!
成都創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為廣饒企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,廣饒網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。從廣義上來說,F(xiàn)lutter動畫組件分為兩種類型,
Drawing-based animations:基于繪制的動畫,就像是畫畫一樣,通常都是獨立的控件,例如游戲角色或者很難用純碎的代碼來完成的效果。
Core-based animations:基于核心的動畫,它面向組件,基于標(biāo)準(zhǔn)的布局和樣式,從本質(zhì)上說,傾向于增強(qiáng)控件的外觀和過渡效果,而不是自己充當(dāng)獨立的控件。
想一想你的動畫是基于繪制的,還是基于核心(組件)的:
如果是基于繪制的,而且你的團(tuán)隊中有專門的設(shè)計人員提供素材,建議你使用第三方工具,比如Rive和Lottie,這些庫可以方便的導(dǎo)入資源來構(gòu)建動畫。
如果是基于核心(組件)的,涉及組件的變化,比如顏色、形狀、位置的變化等。
在Flutter中基于核心(組件)的動畫又分為兩類:
隱式動畫控件:只需提供給組件開始、結(jié)束值,系統(tǒng)執(zhí)行動畫,比如AnimatedAlign等組件。
顯式動畫控件:需要設(shè)置AnimationController,控制動畫的執(zhí)行,使用顯式動畫可以完成任何隱式動畫的效果,甚至功能更豐富一些,不過你需要管理該動畫的AnimationController生命周期,AnimationController并不是一個控件,所以需要將其放在stateful 控件中。
從上面的分類中,我們不難看出,使用隱式動畫控件,代碼更簡單,而且無需管理AnimationController的生命周期。
如何確定使用隱式動畫控件還是顯式動畫控件?你需要考慮3個問題:
動畫是否一直重復(fù),比如音樂播放。
動畫值是否不連續(xù),比如一個圓圈,不連續(xù)的尺寸變化:小->大,小->大,小->大。連續(xù)的尺寸變化:小->大->小->大。
是否有多個組件一起動畫。
如果你對這三個問題中的任何一個回答“是”,那么你需要使用顯式動畫控件,否則你就使用隱式動畫控件。
一旦你確定了使用顯式動畫控件或者隱式動畫控件,這個時候你就需要找到對應(yīng)的組件,你需要的組件是否已經(jīng)在Flutter中內(nèi)置了?
對于隱式組件來說:
已經(jīng)內(nèi)置:直接使用,當(dāng)然也可以看下AnimatedContainer組件,AnimatedContainer是非常強(qiáng)大且用途廣泛的動畫組件。
未內(nèi)置:可以使用TweenAnimationBuilder創(chuàng)建一個自定義的動畫控件。
對于顯示組件來說:
內(nèi)置:直接使用相關(guān)組件,比如xxxTransition組件。
未內(nèi)置:自定義一個動畫控件。
自定義一個顯式的動畫組件需要確認(rèn)這個動畫組件是單獨一個組件還是組件的一部分,
單獨一個顯示組件:你應(yīng)該繼承 AnimatedWidget來實現(xiàn)。
組件的一部分:使用AnimatedBuilder來實現(xiàn)。
還有最后一件事情需要考慮:如果你發(fā)現(xiàn)由CustomPainter引起的性能問題,你可以像AnimatedWidget一樣使用它,但是CustomPainer直接繪制到畫布上,而無需標(biāo)準(zhǔn)的小部件構(gòu)建范例,如果使用的好,可以創(chuàng)建一些整潔、豐富的自定義的效果或者節(jié)省性能,但如果使用的不好,你的動畫可能引起更多的性能問題,就像是手動管理內(nèi)存一樣,要處理好共享指針,為什么要用這樣用,是否有內(nèi)存問題,這些問題都要考慮清楚。
感謝各位的閱讀,以上就是“怎么選擇Flutter動畫控件”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么選擇Flutter動畫控件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!