Flutter Animation动画开发之——最简单的动画入门
程序员文章站
2022-03-09 20:17:44
...
下面的代码我们实现了一个绿色方块在5秒内宽高从100变化到500的动画,关键的地方都有注释说明
class AnimationRoute extends StatefulWidget {
@override
AnimationRouteState createState() => AnimationRouteState();
}
class AnimationRouteState extends State<AnimationRoute> with SingleTickerProviderStateMixin {
Animation<double> animation;
AnimationController controller;
initState() {
super.initState();
// Controller设置动画时长
// vsync设置一个TickerProvider,当前State 混合了SingleTickerProviderStateMixin就是一个TickerProvider
controller = AnimationController(
duration: Duration(seconds: 5),
vsync: this //
);
// Tween设置动画的区间值,animate()方法传入一个Animation,AnimationController继承Animation
animation = new Tween(begin: 100.0, end: 500.0).animate(animation)
// addListener监听动画每一帧的回调,这个调用setState()刷新UI
..addListener(() {
setState(()=>{});
});
//启动动画(正向执行)
controller.forward();
}
@override
Widget build(BuildContext context) {
return Center(
// 这里显示一个方形区域,随着动画执行不断变大
child: Container(
color: Colors.green,
width: animation.value,
height: animation.value,
),
);
}
@override
void dispose() {
// 释放资源
controller.dispose();
super.dispose();
}
}
总结:
- 创建AnimationController,设置动画时长
- 创建Tween设置动画的区间值
- 调用Tween.animate(),传入上面创建的AnimationController
- addListener()监听动画回调,在里面调用setState()刷新UI
- 调用AnimationController.dispose()释放动画资源
上一篇: python制作动图
下一篇: Mac如何显示隐藏文件
推荐阅读
-
微信小程序开发之animation循环动画实现的让云朵飘效果
-
Flutter路由的跳转、动画和传参详解(最简单)
-
Android TV开发,最简单的方式实现焦点控件放大动画
-
微信小程序开发之animation循环动画实现的让云朵飘效果
-
Flutter路由的跳转、动画和传参详解(最简单)
-
Android TV开发,最简单的方式实现焦点控件放大动画
-
Flutter Animation动画开发之——AnimatedBuilder
-
Flutter Animation动画开发之——最简单的动画入门
-
Flutter Animation动画开发之——Curve动画曲线
-
Flutter Animation动画开发之——AnimatedWidget