flutter RotationTransition實現(xiàn)旋轉動畫
本文實例為大家分享了flutter RotationTransition實現(xiàn)旋轉動畫的具體代碼,供大家參考,具體內容如下
flutter 動畫狀態(tài)監(jiān)聽器
AnimationController
//動畫控制器
AnimationController controller;
//AnimationController是一個特殊的Animation對象,在屏幕刷新的每一幀,就會生成一個新的值,
// 默認情況下,AnimationController在給定的時間段內會線性的生成從0.0到1.0的數(shù)字
//用來控制動畫的開始與結束以及設置動畫的監(jiān)聽
//vsync參數(shù),存在vsync時會防止屏幕外動畫(動畫的UI不在當前屏幕時)消耗不必要的資源
//duration 動畫的時長,這里設置的 seconds: 2 為2秒,當然也可以設置毫秒 milliseconds:2000.
controller =
AnimationController(duration: const Duration(seconds: 2), vsync: this);
//動畫開始、結束、向前移動或向后移動時會調用StatusListener
controller.addStatusListener((status) {
if (status == AnimationStatus.completed) {
//動畫從 controller.reverse() 反向執(zhí)行 結束時會回調此方法
print("status is completed");
// controller.reset(); 將動畫重置到開始前的狀態(tài)
//開始執(zhí)行
//controller.forward();
} else if (status == AnimationStatus.dismissed) {
//動畫從 controller.forward() 正向執(zhí)行 結束時會回調此方法
print("status is dismissed");
//controller.forward();
}else if (status == AnimationStatus.forward) {
print("status is forward");
//執(zhí)行 controller.forward() 會回調此狀態(tài)
}else if (status == AnimationStatus.reverse) {
//執(zhí)行 controller.reverse() 會回調此狀態(tài)
print("status is reverse");
}
});
AnimationController 的常用操作說明

flutter AnimationStatus 動畫狀態(tài)說明

1 flutter RotationTransition實現(xiàn)旋轉動畫

//動畫控制器
AnimationController controller;
//AnimationController是一個特殊的Animation對象,在屏幕刷新的每一幀,就會生成一個新的值,
// 默認情況下,AnimationController在給定的時間段內會線性的生成從0.0到1.0的數(shù)字
//用來控制動畫的開始與結束以及設置動畫的監(jiān)聽
//vsync參數(shù),存在vsync時會防止屏幕外動畫(動畫的UI不在當前屏幕時)消耗不必要的資源
//duration 動畫的時長,這里設置的 seconds: 2 為2秒,當然也可以設置毫秒 milliseconds:2000.
controller =
AnimationController(duration: const Duration(seconds: 2), vsync: this);
//動畫開始、結束、向前移動或向后移動時會調用StatusListener
controller.addStatusListener((status) {
if (status == AnimationStatus.completed) {
//動畫從 controller.forward() 正向執(zhí)行 結束時會回調此方法
print("status is completed");
} else if (status == AnimationStatus.dismissed) {
//動畫從 controller.reverse() 反向執(zhí)行 結束時會回調此方法
print("status is dismissed");
} else if (status == AnimationStatus.forward) {
print("status is forward");
//執(zhí)行 controller.forward() 會回調此狀態(tài)
} else if (status == AnimationStatus.reverse) {
//執(zhí)行 controller.reverse() 會回調此狀態(tài)
print("status is reverse");
}
});
執(zhí)行動畫的 widget
//旋轉
Widget buildRotationTransition() {
return Center(
child: RotationTransition(
//設置動畫的旋轉中心
alignment: Alignment.center,
//動畫控制器
turns: controller,
//將要執(zhí)行動畫的子view
child: Container(
width: 100,
height: 100,
color: Colors.grey,
),
),
);
}
}
2 flutter RotationTransition實現(xiàn)無限循環(huán)旋轉動畫

實現(xiàn)方法 就是在動畫結束的時候再開啟動畫
//動畫開始、結束、向前移動或向后移動時會調用StatusListener
controller.addStatusListener((status) {
if (status == AnimationStatus.completed) {
//動畫從 controller.forward() 正向執(zhí)行 結束時會回調此方法
print("status is completed");
//重置起點
controller.reset();
//開啟
controller.forward();
} else if (status == AnimationStatus.dismissed) {
//動畫從 controller.reverse() 反向執(zhí)行 結束時會回調此方法
print("status is dismissed");
} else if (status == AnimationStatus.forward) {
print("status is forward");
//執(zhí)行 controller.forward() 會回調此狀態(tài)
} else if (status == AnimationStatus.reverse) {
//執(zhí)行 controller.reverse() 會回調此狀態(tài)
print("status is reverse");
}
});
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android實現(xiàn)監(jiān)聽電話呼叫狀態(tài)的方法
這篇文章主要介紹了Android實現(xiàn)監(jiān)聽電話呼叫狀態(tài)的方法,涉及Android權限控制及電話狀態(tài)監(jiān)聽的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
Android開發(fā)實現(xiàn)ListView異步加載數(shù)據(jù)的方法詳解
這篇文章主要介紹了Android開發(fā)實現(xiàn)ListView異步加載數(shù)據(jù)的方法,結合具體實例形式分析了Android操作ListView實現(xiàn)異步加載數(shù)據(jù)的具體步驟與相關實現(xiàn)技巧,需要的朋友可以參考下2017-11-11
Android應用中實現(xiàn)手勢控制圖片縮放的完全攻略
這篇文章主要介紹了Android應用中實現(xiàn)手勢控制圖片縮放的完全攻略,采用了Matrix矩陣的方法,實例講解了包括觸摸點設置與各種沖突的處理等方面,相當全面,需要的朋友可以參考下2016-04-04
Android?SharedPreferences性能瓶頸解析
這篇文章主要為大家介紹了Android?SharedPreferences性能瓶頸解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02

