返回
Flutter动画系列:第二章 隐式动画的局限性
IOS
2023-11-30 09:37:29
显式动画基础
显式动画需要使用AnimationController来控制。AnimationController是一个类,它可以控制动画的播放速度、方向和循环次数。要创建一个AnimationController,可以使用以下代码:
AnimationController controller = new AnimationController(
duration: const Duration(milliseconds: 1000),
vsync: vsync,
);
- duration:动画的持续时间。
- vsync:一个同步对象,它可以确保动画在正确的时机更新。
创建一个AnimationController后,可以使用以下方法来控制动画:
- forward():播放动画。
- reverse():反向播放动画。
- stop():暂停动画。
- resume():恢复动画。
- seek():跳跃到某个动画状态。
- setPlaybackRate():控制动画播放速度。
显式动画示例
以下是一个简单的显式动画示例:
import 'package:flutter/animation.dart';
class MyAnimatedWidget extends StatelessWidget {
final AnimationController controller;
MyAnimatedWidget({required this.controller});
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: controller,
builder: (BuildContext context, Widget child) {
return Transform.translate(
offset: Offset(0.0, controller.value * 100.0),
child: child,
);
},
child: Container(
width: 100.0,
height: 100.0,
color: Colors.red,
),
);
}
}
在这个示例中,我们创建了一个AnimationController,然后使用它来控制一个Container的位移动画。当AnimationController的value从0.0到1.0时,Container将从屏幕顶部移动到底部。
总结
显式动画可以实现更复杂的动画效果,例如,循环播放、暂停动画、恢复动画、跳跃到某个动画状态等。显式动画的使用方法也比较简单,只需要创建一个AnimationController,然后使用AnimationController来控制动画的播放速度、方向和循环次数。