Android利用ScaleTransition實(shí)現(xiàn)吹氣球動(dòng)畫
前言
這是最后一篇介紹如何使用基本動(dòng)畫組件的文章,我們繼續(xù) Transition
的動(dòng)畫,本篇來(lái)介紹 ScaleTransition
。我們?cè)谥暗奈恼陆榻B過(guò)使用 Animation
和 AnimationController
來(lái)實(shí)現(xiàn)組件的縮放,那是通過(guò)更改圖片的尺寸實(shí)現(xiàn)的,具體可以參考:Flutter 實(shí)現(xiàn)愛心三連動(dòng)畫。
而對(duì)于只需要放大或縮小的場(chǎng)合,可以直接使用 ScaleTransition
來(lái)完成,例如我們本篇實(shí)現(xiàn)了一個(gè)氣球從小到大,感覺像被用力吹起來(lái)一樣的動(dòng)畫效果。
balloon.gif
ScaleTransition 介紹
ScaleTransition
的使用非常簡(jiǎn)單,只有三個(gè)參數(shù),構(gòu)造方法定義如下。
const?ScaleTransition({ ??Key??key, ??required?Animation<double>?scale, ??this.alignment?=?Alignment.center, ??this.child, })
參數(shù)對(duì)應(yīng)的說(shuō)明如下:
scale
:即組件的縮放尺寸,為 Animation 對(duì)象,組件實(shí)際的尺寸等于組件的實(shí)際尺寸乘以該對(duì)象的值。。alignment
:即縮放的起始對(duì)齊位置,通過(guò)這個(gè)參數(shù)可以控制組件的縮放方向,比如我們的氣球就是從bottomCenter
開始縮放的,這樣氣球嘴那邊感覺沒有動(dòng)一樣。child
:要縮放的子組件。
應(yīng)用
我們要實(shí)現(xiàn)的氣球動(dòng)畫非常簡(jiǎn)單,找一張氣球圖片 (推薦一個(gè)找免費(fèi) png 圖素材的國(guó)外網(wǎng)站:https://www.pngpix.com)。然后使用一個(gè) Animation 對(duì)象控制縮放的時(shí)間和大小即可。因?yàn)闅馇蚝竺嬖絹?lái)越難吹,因此我們將曲線設(shè)置為 easeOut
(先快后慢),源代碼如下:
class?ScaleTransitionDemo?extends?StatefulWidget?{ ??ScaleTransitionDemo({Key??key})?:?super(key:?key); ??@override ??_ScaleTransitionDemoState?createState()?=>?_ScaleTransitionDemoState(); } class?_ScaleTransitionDemoState?extends?State<ScaleTransitionDemo> ????with?SingleTickerProviderStateMixin?{ ??late?AnimationController?_controller?= ??????AnimationController(duration:?const?Duration(seconds:?10),?vsync:?this) ????????..repeat(); ??//使用自定義曲線動(dòng)畫過(guò)渡效果 ??late?Animation<double>?_animation?= ??????CurvedAnimation(parent:?_controller,?curve:?Curves.easeOut); ??@override ??Widget?build(BuildContext?context)?{ ????return?Scaffold( ??????appBar:?AppBar( ????????title:?Text('ScaleTransition'), ????????brightness:?Brightness.dark, ????????backgroundColor:?Colors.blue, ??????), ??????body:?Center( ????????child:?balloon(), ??????), ????); ??} ??@override ??void?dispose()?{ ????_controller.stop(); ????_controller.dispose(); ????super.dispose(); ??} ??Widget?balloon()?{ ????return?ScaleTransition( ??????alignment:?Alignment.bottomCenter, ??????child:?Image.asset( ????????'images/balloon.png', ??????), ??????scale:?_animation, ????); ??} }
總結(jié)
本篇介紹了使用 ScaleTransition
控制組件尺寸實(shí)現(xiàn)類似吹氣球的動(dòng)畫。ScaleTransition
的實(shí)際應(yīng)用有不少,例如點(diǎn)擊圖片查看大圖、縮小轉(zhuǎn)場(chǎng)切換、以及鏡頭從近拉到遠(yuǎn)或從遠(yuǎn)處走過(guò)來(lái)的那種感覺等等。有興趣的可以自己嘗試一些有趣的動(dòng)畫 —— 畢竟玩動(dòng)畫比單純寫界面更有趣一些!
以上就是Android利用ScaleTransition實(shí)現(xiàn)吹氣球動(dòng)畫的詳細(xì)內(nèi)容,更多關(guān)于Android 吹氣球動(dòng)畫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文
相關(guān)文章
Android中轉(zhuǎn)場(chǎng)動(dòng)畫的實(shí)現(xiàn)與兼容性處理
大家都知道Android 中的動(dòng)畫有很多,除了在一個(gè)界面上使用幀動(dòng)畫、屬性動(dòng)畫將一個(gè)或多個(gè) View 進(jìn)行動(dòng)畫處理以外,還可以用于兩個(gè)界面之間過(guò)渡、跳轉(zhuǎn)。本文的內(nèi)容包括:Android 5.0+ 的轉(zhuǎn)場(chǎng)動(dòng)畫和Android 4.X 模擬實(shí)現(xiàn) Android 5.0+ 轉(zhuǎn)場(chǎng)效果。有需要的可以參考借鑒。2016-10-10Android RecycleView和線型布局制作聊天布局
大家好,本篇文章主要講的是Android RecycleView和線型布局制作聊天布局,感興趣的同學(xué)趕緊來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Android編程之簡(jiǎn)單計(jì)時(shí)器實(shí)現(xiàn)方法
這篇文章主要介紹了Android編程之簡(jiǎn)單計(jì)時(shí)器實(shí)現(xiàn)方法,涉及Android開發(fā)中ContextMenu及Chronometer的相關(guān)使用技巧,需要的朋友可以參考下2016-01-01Android開發(fā)MQTT協(xié)議的模型及通信淺析
這篇文章主要W為大家介紹了Android開發(fā)MQTT協(xié)議的模型及通信淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Android 中按home鍵和跳轉(zhuǎn)到主界面的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家分享Android 中按home鍵和跳轉(zhuǎn)到主界面的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-04-04Android通過(guò)手機(jī)拍照或從本地相冊(cè)選取圖片設(shè)置頭像
微信、QQ、微博等社交類APP如何更換自己的頭像,這篇文章主要介紹了Android通過(guò)手機(jī)拍照或從本地相冊(cè)選取圖片設(shè)置頭像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07詳解android特性之CoordinatorLayout用法探析實(shí)例
本篇文章主要介紹了android特性之CoordinatorLayout用法探析實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02Android EditText限制輸入字?jǐn)?shù)的方法
這篇文章主要介紹了Android EditText限制輸入字?jǐn)?shù)的方法,涉及Android針對(duì)EditText文本與字符串操作相關(guān)技巧,需要的朋友可以參考下2016-01-01