最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年07月17日 11:33:25   作者:早起的年輕人  
這篇文章主要為大家詳細(xì)介紹了flutter RotationTransition實(shí)現(xiàn)旋轉(zhuǎn)動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了flutter RotationTransition實(shí)現(xiàn)旋轉(zhuǎn)動(dòng)畫(huà)的具體代碼,供大家參考,具體內(nèi)容如下

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");
  }
 });

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android NDK開(kāi)發(fā)入門(mén)

    Android NDK開(kāi)發(fā)入門(mén)

    本文主要對(duì)NDK產(chǎn)生的背景、使用NDK原因、NDK簡(jiǎn)介、NDK開(kāi)發(fā)環(huán)境的搭建、如何運(yùn)行NDK提供的事例demo等進(jìn)行了詳細(xì)的介紹。具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧
    2016-12-12
  • Android實(shí)現(xiàn)監(jiān)聽(tīng)電話呼叫狀態(tài)的方法

    Android實(shí)現(xiàn)監(jiān)聽(tīng)電話呼叫狀態(tài)的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)監(jiān)聽(tīng)電話呼叫狀態(tài)的方法,涉及Android權(quán)限控制及電話狀態(tài)監(jiān)聽(tīng)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android 自定義Switch開(kāi)關(guān)按鈕的樣式實(shí)例詳解

    Android 自定義Switch開(kāi)關(guān)按鈕的樣式實(shí)例詳解

    本文主要講的是在Android原生Switch控件的基礎(chǔ)上進(jìn)行樣式自定義,內(nèi)容很簡(jiǎn)單,但是在實(shí)現(xiàn)的過(guò)程中還是遇到了一些問(wèn)題,在此記錄下來(lái),需要的朋友參考下吧
    2017-12-12
  • 詳解Flutter中視頻播放器插件的使用教程

    詳解Flutter中視頻播放器插件的使用教程

    視頻播放器插件是可用于Flutter的常用插件之一,在這篇文章中,將學(xué)習(xí)如何應(yīng)用視頻播放器插件以及控制視頻播放器的不同功能,感興趣的可以了解一下
    2022-02-02
  • Android 添加系統(tǒng)服務(wù)的方法詳解

    Android 添加系統(tǒng)服務(wù)的方法詳解

    這篇文章主要介紹了Android 添加系統(tǒng)服務(wù)的方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Android開(kāi)發(fā)實(shí)現(xiàn)ListView異步加載數(shù)據(jù)的方法詳解

    Android開(kāi)發(fā)實(shí)現(xiàn)ListView異步加載數(shù)據(jù)的方法詳解

    這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)ListView異步加載數(shù)據(jù)的方法,結(jié)合具體實(shí)例形式分析了Android操作ListView實(shí)現(xiàn)異步加載數(shù)據(jù)的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-11-11
  • Android應(yīng)用中實(shí)現(xiàn)手勢(shì)控制圖片縮放的完全攻略

    Android應(yīng)用中實(shí)現(xiàn)手勢(shì)控制圖片縮放的完全攻略

    這篇文章主要介紹了Android應(yīng)用中實(shí)現(xiàn)手勢(shì)控制圖片縮放的完全攻略,采用了Matrix矩陣的方法,實(shí)例講解了包括觸摸點(diǎn)設(shè)置與各種沖突的處理等方面,相當(dāng)全面,需要的朋友可以參考下
    2016-04-04
  • Android仿一號(hào)店貨物詳情輪播圖動(dòng)畫(huà)效果

    Android仿一號(hào)店貨物詳情輪播圖動(dòng)畫(huà)效果

    這篇文章主要為大家詳細(xì)介紹了Android-仿一號(hào)店貨物詳情輪播圖動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android?SharedPreferences性能瓶頸解析

    Android?SharedPreferences性能瓶頸解析

    這篇文章主要為大家介紹了Android?SharedPreferences性能瓶頸解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • android開(kāi)發(fā)中使用java觀察者模式

    android開(kāi)發(fā)中使用java觀察者模式

    遇到android程序中后入棧的一個(gè)Activity需要更新之前一個(gè)或者兩個(gè)以上Activity中的數(shù)據(jù)時(shí)使用,或者需要在adapter中修改Activity或者fragment的數(shù)據(jù)和ui等
    2014-02-02

最新評(píng)論

苏州市| 冕宁县| 洪江市| 潢川县| 文化| 孟连| 句容市| 周口市| 龙江县| 新宁县| 绥棱县| 吕梁市| 金阳县| 高平市| 辰溪县| 饶阳县| 尖扎县| 阜南县| 清苑县| 昂仁县| 上杭县| 长子县| 陈巴尔虎旗| 湘潭市| 巩留县| 腾冲县| 原平市| 花垣县| 祁阳县| 临邑县| 河曲县| 观塘区| 上杭县| 温州市| 原阳县| 林芝县| 晋宁县| 清徐县| 敦化市| 来凤县| 水富县|