flutter FadeTransition实现透明度渐变动画
2023-09-11 14:14:53 时间
flutter 动画状态监听器
AnimationController
//动画控制器
AnimationController controller;
//AnimationController是一个特殊的Animation对象,在屏幕刷新的每一帧,就会生成一个新的值,
// 默认情况下,AnimationController在给定的时间段内会线性的生成从0.0到1.0的数字
//用来控制动画的开始与结束以及设置动画的监听
//vsync参数,存在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() 反向执行 结束时会回调此方法
print("status is completed");
// controller.reset(); 将动画重置到开始前的状态
//开始执行
//controller.forward();
} else if (status == AnimationStatus.dismissed) {
//动画从 controller.forward() 正向执行 结束时会回调此方法
print("status is dismissed");
//controller.forward();
}else if (status == AnimationStatus.forward) {
print("status is forward");
//执行 controller.forward() 会回调此状态
}else if (status == AnimationStatus.reverse) {
//执行 controller.reverse() 会回调此状态
print("status is reverse");
}
});
AnimationController 的常用操作说明
值 | 说明 |
---|---|
controller.forward() | 正向开始执行动画 |
controller.reverse() | 反向开始执行动画 |
controller.reset() | 重置动画到初始状态 |
controller.dispose() | 取消/停止动画 |
flutter AnimationStatus 动画状态说明
值 | 说明 |
---|---|
AnimationStatus.forward | 执行 controller.forward() 会回调此状态 |
AnimationStatus.reverse | 执行 controller.reverse() 会回调此状态 |
AnimationStatus.dismissed | 动画从 controller.reverse() 反向执行 结束时会回调此方法 |
AnimationStatus.completed) | 动画从 controller.forward() 正向执行 结束时会回调此方法 |
flutter FadeTransition实现透明度渐变动画
//动画控制器
AnimationController controller;
controller =
AnimationController(duration: const Duration(seconds: 2), vsync: this);
//动画开始、结束、向前移动或向后移动时会调用StatusListener
controller.addStatusListener((status) {
if (status == AnimationStatus.completed) {
//动画从 controller.forward() 正向执行 结束时会回调此方法
print("status is completed");
//反向执行
//controller.reverse();
} else if (status == AnimationStatus.dismissed) {
//动画从 controller.reverse() 反向执行 结束时会回调此方法
print("status is dismissed");
//controller.forward();
} else if (status == AnimationStatus.forward) {
print("status is forward");
//执行 controller.forward() 会回调此状态
} else if (status == AnimationStatus.reverse) {
//执行 controller.reverse() 会回调此状态
print("status is reverse");
}
});
执行动画的view
//渐变动画
Widget buildSlideTransition() {
return Center(
child: FadeTransition(
opacity: controller,
//将要执行动画的子view
child: Container(
width: 200,
height: 200,
color: Colors.grey,
child: Image.network(
"http://img5.duitang.com/uploads/item/201411/16/20141116124947_xBNxM.jpeg",
),
),
),
);
}
开始动画
//动画开始
controller.forward();
页面消毁时
@override
void dispose() {
super.dispose();
controller.dispose();
}
相关文章
- 用SpriteBuilder简化"耕牛遍地走"的动画效果(三)
- SpriteBuilder中如何给精灵添加帧动画
- 使用一元二次方程做实时动画
- iOS 开发之动画篇 - 从 UIView 动画说起
- ExtJS简单的动画效果2(ext js淡入淡出特效)
- Flutter: AnimatedList 一个滚动容器,可在插入或移除项目时为其设置动画
- fragement切换动画效果的实现
- Android群英传笔记——第七章:Android动画机制和使用技巧
- Android特效专辑(七)——飞机升空特效,一键清理缓存,灵活运用动画会有不一样的感受
- Flutter 陈航 22-动画 Animation Hero
- 动画-- 按钮按序列(从小到大)显示
- [Flutter] 因为不讲这个重点, 全网 flutter 实战视频沦为二流课程
- [Flutter] lib/main.dart:1: Warning: Interpreting this as package URI, 'package:flutter_app/main.dart'.
- Flutter 深度学习 — 动画(补间动画、Hero动画、交错动画)
- Android Interpolator属性 设置动画速度
- Flutter 开发环境搭建Unable to ‘pub upgrade‘ flutter tool. Retrying in five seconds...
- 【Qt】实现波浪动画效果
- jquery 清除动画队列不疑惑