美文网首页
Flutter 动画

Flutter 动画

作者: Volcaner | 来源:发表于2020-11-27 16:50 被阅读0次

1. 动画四要素

1.1 插值器

// double 类型的动画
Animation<double> => Tween(begin: 0.0, end: 200.0).animate(controller)

// int 类型的动画
Animation<int> => IntTween(begin: 0, end: 1)

// alignment
Animation<AlignmentGeometry> => Tween(begin: Alignment.center, end: Alignment.TopLeft)

// 颜色渐变动画
Animation<color> => ColorTween(begin: Colors.grey, end: Colors.red)

// size类型的动画
Animation<Size> => SizeTween(begin: Size(100,100), end: Size(200, 200))
// Animation<Size> sizeAnim = SizeTween(begin: Size(100,100),end: Size(200,200)).animate(controller)
//     ..addListener(() {
//         print("reverse====${sizeAnim.value}");
//         setState(() {
//         // the state that has changed here is the animation object’s value
//         });
//     })
//     ..addStatusListener((status){
//     });
// SizedBox.fromSize(
//     child: Container(
//         color: Colors.red,
//     ),
//     size: sizeAnim.value,
// )


// Rect 类型动画
RectTween(begin: Rect.fromLTRB(100,100,100,100), end: Rect.fromLTRB(100,100,100,100))

// 常量值动画: 
Animation<int> constantAnim = ConstantTween<int>(5)

// 反转动画
Animation reverseAnim = ReverseTween(IntTween(begin: 0, end: 200))

// 步数动画,比如做个计时器  
Animation<int> stepAnim = StepTween(begin: 10, end: 0)

...更多...

1.2 动画曲线

Curve

linear
decelerate
ease
easeIn
easeOut
easeInOut
fastOutSlowIn
bounceIn
bounceOut
bounceInOut
elasticIn
elasticOut
elasticInOut
final Animation<double> animation = CurvedAnimation(
  parent: controller,
  curve: Curves.easeIn,
  reverseCurve: Curves.easeOut,
);


1.3 Ticker providers

class _MyAnimationState extends State<MyAnimation> 
  with TickerProviderStateMixin {
    
}

1.4 动画控制器(AnimationController)

// 混入 SingleTickerProviderStateMixin 使对象实现 Ticker 功能
class _AnimatedContainerState extends State<AnimatedContainer>
        with SingleTickerProviderStateMixin {
  AnimationController _controller;

  @override
  void initState() {
    super.initState();
    // 创建 AnimationController 动画
    _controller = AnimationController(
      // 传入 Ticker 对象
      vsync: this,
      // 传入 动画持续时间
      duration: new Duration(milliseconds: 1000),
    );
    startAnimation();
  }

  Future<void> startAnimation() async {
    // 调用 AnimationController 的 forward 方法启动动画
    await _controller.forward();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      width: _controller.value;
      child: //...
    );
  }
}
enum AnimationStatus {
  /// 动画处于停止状态
  dismissed,
  /// 动画从头到尾执行
  forward,
  /// 动画从尾到头执行
  reverse,
  /// 动画已执行完成
  completed,
}

2. 隐式动画

// AnimatedContainer
AnimatedContainer(
  duration: Duration(seconds: 5),
  width: 60.0,
  height: height,
  color: Color(0xff14ff65),
)

onPressed: (){
  setState(() {
    height = 320.0;
  });
},
// AnimatedOpacity
double opacity = 1.0;
...
AnimatedOpacity(
    opacity: opacity,
    duration: Duration(seconds: 1),
    child: Text("hello"),
)

setState(() {
    opacity = 0.0;
});

...更多...

3. 共享元素转换

Hero
Hero 动画

4. 交错动画

交错动画(Staggered Animations)

Flutter中的动画
Flutter 动画之 Tween
Flutter 动画全解析(动画四要素、动画组件、隐式动画组件原理等)
Flutter 通用“动画切换”组件(AnimatedSwitcher)
Flutter动画全解析(动画四要素、动画组件、隐式动画组件原理等)

相关文章

  • Flutter 动画效果

    在动画方面 Flutter 提供了 Animation 类提供使用。 动画 Flutter 中创建动画,请创建名为...

  • Flutter动画animation

    参考 动画 flutter中动画抽象 划重点 Flutter 中的动画系统基于Animation对象,widget...

  • Flutter中的动画

    Flutter中的动画 Flutter中的动画 https://flutterchina.club/tutoria...

  • Flutter从入门到写出完整App Day12

    20.3.27 Flutter实现动画 Flutter有自己的渲染闭环 一. 动画API认识 1. Animati...

  • Flutter轮播图

    前端开发当中最有意思的就是实现动画特效,Flutter提供的各种动画组件可以方便实现各种动画效果。Flutter中...

  • 深入理解Flutter动画原理

    基于Flutter 1.5,从源码视角来深入剖析flutter动画原理,相关源码目录见文末附录 一、概述 动画效果...

  • Flutter动画: Animation动画基础(一)

    我的博客 要使用Flutter中动画, 首先要熟悉Flutter的动画基础概念和相关类。 Animation:Fl...

  • Flutter - 创建拍手动画

    在本文中,我们将从头开始探索Flutter动画。我们将通过在Flutter中创建拍手动画的模型来学习关于动画的一些...

  • Flutter开发之帧动画

    最近写了一些flutter的小动画,在这里也写几个篇章介绍下flutter的动画的实现,先实现个简单的帧动画,举例...

  • Flutter:一个简单的动画实现原理浅析

    Flutter 动画 本文主要介绍 Flutter 动画相关的内容,对相关的知识点进行了梳理,并从实际例子出发,进...

网友评论

      本文标题:Flutter 动画

      本文链接:https://www.haomeiwen.com/subject/qgvxwktx.html