返回

Flutter动画系列:第二章 隐式动画的局限性

IOS

显式动画基础

显式动画需要使用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来控制动画的播放速度、方向和循环次数。