Flutter开发之——动画—Tween

阅读: 评论:0

Flutter开发之——动画—Tween

Flutter开发之——动画—Tween

一 概述

  • Tween动画,又叫补间动画
  • Tween有两个关键帧,begin起始帧,end结束帧,补间动画在begin和end之间插入补帧完成动画效果
  • 常见的Tween动画有:ColorTween、SizeTween、RectTween、IntTween、StepTween、ConstantTween、CurveTween

二 Tween

2.1 说明

  • Tween是将值变化的过程进行了封装(封装了begin起始值和end结束值)
  • 将之前通过setState刷新获取到的值转换为动画的值来完成显示

2.2 构造函数

Tween({this.d,});

2.3 更换为Tween后对比

使用Tween之前
//定义变化量
double _size = 100;
//变化量作用对象
Container(height: _size,width: _size,color: Colors.blue,alignment: ,child: Text('点我变大'),)
//变化量的修改		@overridevoid initState() {super.initState();setState(() {_size = 100+100*_controller.value;});}		
使用Tween之后
Animation<double> animation;//变化过程动画变量
//动画控制器
_controller =  AnimationController(vsync: this,lowerBound: 0,upperBound: 1,duration: Duration(milliseconds: 1000),)
//动画开始和结束值    
animation=Tween<double>(begin: 100,end: 300).animate(_controller);//作用对象Container(height: animation.value,width: animation.value,color: d,alignment: ,child: Text("点我变大"),)

三 示例

3.1 将上节动画使用Tween替换之后(Tween用于int,float类型变换)

代码
 AnimationController _controller;Animation<double> _animation;@overridevoid initState() {super.initState();_controller =  AnimationController(vsync: this,lowerBound: 0,upperBound: 1,duration: Duration(milliseconds: 1000),)..addStatusListener((AnimationStatus status) {if(status == AnimationStatuspleted){_verse();}else if(status == AnimationStatus.dismissed){_controller.forward();}});animation=Tween<double>(begin: 100,end: 300).animate(_controller);}//作用对象Center(child: GestureDetector(onTap: (){_controller.forward();},child: Container(height: animation.value,width: animation.value,color: d,alignment: ,child: Text("点我执行动画"),),),)@overridevoid dispose() {super.dispose();_controller.dispose();}       
效果图

3.2 ColorTween(ColorTween用于Color类型变换)

代码
//变量定义
AnimationController _controller;Animation<Color> animationColor;//动画监听@overridevoid initState() {super.initState();_controller =  AnimationController(vsync: this,lowerBound: 0,upperBound: 1,duration: Duration(milliseconds: 1000),)..addStatusListener((AnimationStatus status) {if(status == AnimationStatuspleted){_verse();}else if(status == AnimationStatus.dismissed){_controller.forward();}});animationColor=ColorTween(begin: d,end: Colors.blue).animate(_controller); }//作用对象Center(child: GestureDetector(onTap: (){_controller.forward();},child: Container(height: 200,width: 200,color: animationColor.value,alignment: ,child: Text("点我执行动画"),),),)
效果图

本文发布于:2024-02-02 22:51:07,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170688546846970.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:动画   Flutter   Tween
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23