中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

使用flutterRotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(zhuǎn)動(dòng)畫(huà)

這篇文章主要介紹了使用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 RotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(zhuǎn)動(dòng)畫(huà)

flutter AnimationStatus 動(dòng)畫(huà)狀態(tài)說(shuō)明

使用flutter RotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(zhuǎn)動(dòng)畫(huà)

1 flutter RotationTransition實(shí)現(xiàn)旋轉(zhuǎn)動(dòng)畫(huà)

使用flutter RotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(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à)

使用flutter RotationTransition怎么實(shí)現(xiàn)一個(gè)旋轉(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)

搜索引擎優(yōu)化
晋城| 清流县| 岳池县| 开阳县| 宝兴县| 金寨县| 喀什市| 横山县| 五河县| 拉萨市| 龙井市| 沂水县| 玛沁县| 永胜县| 东乡| 沧源| 四会市| 锦屏县| 大埔区| 贵南县| 衢州市| 白玉县| 华蓥市| 丰原市| 通海县| 鄂托克旗| 太白县| 子长县| 专栏| 济南市| 三河市| 盐边县| 西贡区| 大余县| 塔河县| 平乐县| 鲁甸县| 大渡口区| 融水| 大埔县| 滨州市|