這篇文章主要介紹了使用flutter RotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(zhuǎn)動(dòng)畫(huà),此處給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下:
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)扎賚特,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
flutter 動(dòng)畫(huà)狀態(tài)監(jiān)聽(tīng)器
AnimationController
//動(dòng)畫(huà)控制器 AnimationController controller; //AnimationController是一個(gè)特殊的Animation對(duì)象,在屏幕刷新的每一幀,就會(huì)生成一個(gè)新的值, // 默認(rèn)情況下,AnimationController在給定的時(shí)間段內(nèi)會(huì)線性的生成從0.0到1.0的數(shù)字 //用來(lái)控制動(dòng)畫(huà)的開(kāi)始與結(jié)束以及設(shè)置動(dòng)畫(huà)的監(jiān)聽(tīng) //vsync參數(shù),存在vsync時(shí)會(huì)防止屏幕外動(dòng)畫(huà)(動(dòng)畫(huà)的UI不在當(dāng)前屏幕時(shí))消耗不必要的資源 //duration 動(dòng)畫(huà)的時(shí)長(zhǎng),這里設(shè)置的 seconds: 2 為2秒,當(dāng)然也可以設(shè)置毫秒 milliseconds:2000. controller = AnimationController(duration: const Duration(seconds: 2), vsync: this); //動(dòng)畫(huà)開(kāi)始、結(jié)束、向前移動(dòng)或向后移動(dòng)時(shí)會(huì)調(diào)用StatusListener controller.addStatusListener((status) { if (status == AnimationStatus.completed) { //動(dòng)畫(huà)從 controller.reverse() 反向執(zhí)行 結(jié)束時(shí)會(huì)回調(diào)此方法 print("status is completed"); // controller.reset(); 將動(dòng)畫(huà)重置到開(kāi)始前的狀態(tài) //開(kāi)始執(zhí)行 //controller.forward(); } else if (status == AnimationStatus.dismissed) { //動(dòng)畫(huà)從 controller.forward() 正向執(zhí)行 結(jié)束時(shí)會(huì)回調(diào)此方法 print("status is dismissed"); //controller.forward(); }else if (status == AnimationStatus.forward) { print("status is forward"); //執(zhí)行 controller.forward() 會(huì)回調(diào)此狀態(tài) }else if (status == AnimationStatus.reverse) { //執(zhí)行 controller.reverse() 會(huì)回調(diào)此狀態(tài) print("status is reverse"); } });
AnimationController 的常用操作說(shuō)明
flutter AnimationStatus 動(dòng)畫(huà)狀態(tài)說(shuō)明
1 flutter RotationTransition實(shí)現(xiàn)旋轉(zhuǎn)動(dòng)畫(huà)
//動(dòng)畫(huà)控制器 AnimationController controller; //AnimationController是一個(gè)特殊的Animation對(duì)象,在屏幕刷新的每一幀,就會(huì)生成一個(gè)新的值, // 默認(rèn)情況下,AnimationController在給定的時(shí)間段內(nèi)會(huì)線性的生成從0.0到1.0的數(shù)字 //用來(lái)控制動(dòng)畫(huà)的開(kāi)始與結(jié)束以及設(shè)置動(dòng)畫(huà)的監(jiān)聽(tīng) //vsync參數(shù),存在vsync時(shí)會(huì)防止屏幕外動(dòng)畫(huà)(動(dòng)畫(huà)的UI不在當(dāng)前屏幕時(shí))消耗不必要的資源 //duration 動(dòng)畫(huà)的時(shí)長(zhǎng),這里設(shè)置的 seconds: 2 為2秒,當(dāng)然也可以設(shè)置毫秒 milliseconds:2000. controller = AnimationController(duration: const Duration(seconds: 2), vsync: this); //動(dòng)畫(huà)開(kāi)始、結(jié)束、向前移動(dòng)或向后移動(dòng)時(shí)會(huì)調(diào)用StatusListener controller.addStatusListener((status) { if (status == AnimationStatus.completed) { //動(dòng)畫(huà)從 controller.forward() 正向執(zhí)行 結(jié)束時(shí)會(huì)回調(diào)此方法 print("status is completed"); } else if (status == AnimationStatus.dismissed) { //動(dòng)畫(huà)從 controller.reverse() 反向執(zhí)行 結(jié)束時(shí)會(huì)回調(diào)此方法 print("status is dismissed"); } else if (status == AnimationStatus.forward) { print("status is forward"); //執(zhí)行 controller.forward() 會(huì)回調(diào)此狀態(tài) } else if (status == AnimationStatus.reverse) { //執(zhí)行 controller.reverse() 會(huì)回調(diào)此狀態(tài) print("status is reverse"); } });
執(zhí)行動(dòng)畫(huà)的 widget
//旋轉(zhuǎn) Widget buildRotationTransition() { return Center( child: RotationTransition( //設(shè)置動(dòng)畫(huà)的旋轉(zhuǎn)中心 alignment: Alignment.center, //動(dòng)畫(huà)控制器 turns: controller, //將要執(zhí)行動(dòng)畫(huà)的子view child: Container( width: 100, height: 100, color: Colors.grey, ), ), ); } }
2 flutter RotationTransition實(shí)現(xiàn)無(wú)限循環(huán)旋轉(zhuǎn)動(dòng)畫(huà)
實(shí)現(xiàn)方法 就是在動(dòng)畫(huà)結(jié)束的時(shí)候再開(kāi)啟動(dòng)畫(huà)
//動(dòng)畫(huà)開(kāi)始、結(jié)束、向前移動(dòng)或向后移動(dòng)時(shí)會(huì)調(diào)用StatusListener controller.addStatusListener((status) { if (status == AnimationStatus.completed) { //動(dòng)畫(huà)從 controller.forward() 正向執(zhí)行 結(jié)束時(shí)會(huì)回調(diào)此方法 print("status is completed"); //重置起點(diǎn) controller.reset(); //開(kāi)啟 controller.forward(); } else if (status == AnimationStatus.dismissed) { //動(dòng)畫(huà)從 controller.reverse() 反向執(zhí)行 結(jié)束時(shí)會(huì)回調(diào)此方法 print("status is dismissed"); } else if (status == AnimationStatus.forward) { print("status is forward"); //執(zhí)行 controller.forward() 會(huì)回調(diào)此狀態(tài) } else if (status == AnimationStatus.reverse) { //執(zhí)行 controller.reverse() 會(huì)回調(diào)此狀態(tài) print("status is reverse"); } });
到此這篇關(guān)于使用flutter RotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(zhuǎn)動(dòng)畫(huà)的文章就介紹到這了,更多相關(guān)的內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!
分享名稱:使用flutterRotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(zhuǎn)動(dòng)畫(huà)
轉(zhuǎn)載來(lái)于:http://www.rwnh.cn/article48/gpopep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)、域名注冊(cè)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)