Android利用ScaleTransition實(shí)現(xiàn)吹氣球動(dòng)畫
前言
這是最后一篇介紹如何使用基本動(dòng)畫組件的文章,我們繼續(xù) Transition 的動(dòng)畫,本篇來介紹 ScaleTransition。我們?cè)谥暗奈恼陆榻B過使用 Animation 和 AnimationController 來實(shí)現(xiàn)組件的縮放,那是通過更改圖片的尺寸實(shí)現(xiàn)的,具體可以參考:Flutter 實(shí)現(xiàn)愛心三連動(dòng)畫。
而對(duì)于只需要放大或縮小的場(chǎng)合,可以直接使用 ScaleTransition 來完成,例如我們本篇實(shí)現(xiàn)了一個(gè)氣球從小到大,感覺像被用力吹起來一樣的動(dòng)畫效果。

balloon.gif
ScaleTransition 介紹
ScaleTransition 的使用非常簡單,只有三個(gè)參數(shù),構(gòu)造方法定義如下。
const?ScaleTransition({
??Key??key,
??required?Animation<double>?scale,
??this.alignment?=?Alignment.center,
??this.child,
})
參數(shù)對(duì)應(yīng)的說明如下:
scale:即組件的縮放尺寸,為 Animation 對(duì)象,組件實(shí)際的尺寸等于組件的實(shí)際尺寸乘以該對(duì)象的值。。alignment:即縮放的起始對(duì)齊位置,通過這個(gè)參數(shù)可以控制組件的縮放方向,比如我們的氣球就是從bottomCenter開始縮放的,這樣氣球嘴那邊感覺沒有動(dòng)一樣。child:要縮放的子組件。
應(yīng)用
我們要實(shí)現(xiàn)的氣球動(dòng)畫非常簡單,找一張氣球圖片 (推薦一個(gè)找免費(fèi) png 圖素材的國外網(wǎng)站:https://www.pngpix.com)。然后使用一個(gè) Animation 對(duì)象控制縮放的時(shí)間和大小即可。因?yàn)闅馇蚝竺嬖絹碓诫y吹,因此我們將曲線設(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)畫過渡效果
??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)處走過來的那種感覺等等。有興趣的可以自己嘗試一些有趣的動(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 Flutter實(shí)現(xiàn)興趣標(biāo)簽選擇功能
我們?cè)谑状问褂脙?nèi)容類 App 的時(shí)候,不少都會(huì)讓我們選擇個(gè)人偏好,通過這些標(biāo)簽選擇可以預(yù)先知道用戶的偏好信息。我們本篇就來看看 Flutter 如何實(shí)現(xiàn)興趣標(biāo)簽的選擇,需要的可以參考一下2022-11-11
Android 進(jìn)度條自動(dòng)前進(jìn)效果的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 進(jìn)度條自動(dòng)前進(jìn)效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
android側(cè)滑菜單控件DrawerLayout使用方法詳解
這篇文章主要為大家詳細(xì)介紹了android側(cè)滑菜單控件DrawerLayout的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
完美解決安卓jni項(xiàng)目會(huì)刪除其他so文件的問題
下面小編就為大家?guī)硪黄昝澜鉀Q安卓jni項(xiàng)目會(huì)刪除其他so文件的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
Android實(shí)戰(zhàn)打飛機(jī)游戲之無限循環(huán)的背景圖(2)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)戰(zhàn)打飛機(jī)游戲之無限循環(huán)的背景圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
Android動(dòng)態(tài)更新Menu菜單的實(shí)現(xiàn)過程
菜單是用戶界面中最常見的元素之一,使用非常頻繁,下面這篇文章主要給大家介紹了關(guān)于Android動(dòng)態(tài)更新Menu菜單的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Android實(shí)現(xiàn)音量調(diào)節(jié)的方法
這篇文章主要介紹了Android實(shí)現(xiàn)音量調(diào)節(jié)的方法,涉及Android頁面布局及多媒體播放的設(shè)置技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
Android使用Intent發(fā)送短信的實(shí)現(xiàn)方法
這篇文章主要介紹了Android使用Intent發(fā)送短信的實(shí)現(xiàn)方法,結(jié)合簡單實(shí)例形式分析了Android短信發(fā)送功能的實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-07-07

