需求:做一个图标放大动画

1:创建 StateFulWidget、 State, Tween动画的创建需要  begin end渐变值,以及一个控制器,

如下:

  //动画控制器  duration 播放时长 vsync 同步,State 需要实现 SingleTickerProviderStateMixinanimationController =AnimationController(duration: Duration(seconds: 2), vsync: this);//动画需要一个开始 结束渐变值范围 动画控制器animation = Tween<double>(begin: 0, end: 300).animate(animationController);

2:本次动画使用 AnimatedBuilder,接下来创建 变大动画的图标之前,我们先来实现 动画组件先,创建一个 AnimatedLogo,用于构造动画,如下:


// AnimatedBuilder 模式的tween 动画组件
class AnimatedLogo extends StatelessWidget {Animation<double> animation;Widget child;//接受一个 动画 用于动画的 widgetAnimatedLogo({this.animation, this.child});//创建 AnimatedBuilder 设置传入的 动画 组件@overrideWidget build(BuildContext context) => AnimatedBuilder(animation: animation,child: child,builder: (context, child) =>//创建一个容器 包裹 " 用于动画的 widget",根据动画渐变值 改变其大小Container(child: child,height: animation.value,width: animation.value,),);
}

3: 回到 StateFulWidget,设置body,引入 AnimatedLogo,设置 第一个步骤时候创建的animation,这里的child我们直接使用FLutterLogo(ps:想设置什么都可以,例如Icon(Icons.xx)),如下:

//设置动画组件  animation: 执行的动画 child:需要做动画的 widgetbody: AnimatedLogo(animation: animation,child: FlutterLogo(),));

全文如下:

import 'dart:ffi';import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';class AnimBuildDart extends StatefulWidget {const AnimBuildDart({Key key}) : super(key: key);@override_AnimActionDartState createState() => _AnimActionDartState();
}class _AnimActionDartState extends State<AnimBuildDart>with SingleTickerProviderStateMixin {AnimationController animationController;AnimationStatus status;Animation animation;@overridevoid initState() {//初始化super.initState();//动画控制器  duration 播放时长 vsync 同步,State 需要实现 SingleTickerProviderStateMixinanimationController =AnimationController(duration: Duration(seconds: 2), vsync: this);//动画需要一个开始 结束渐变值范围 动画控制器animation = Tween<double>(begin: 0, end: 300).animate(animationController);animationController.forward();}@overridevoid didChangeDependencies() {//   改变super.didChangeDependencies();}@overrideWidget build(BuildContext context) {//改变 构造return Scaffold(appBar: AppBar(title: Text("tween"),leading: GestureDetector(child: Icon(Icons.arrow_back),onTap: () {Navigator.pop(context);},),),//设置动画组件  animation: 执行的动画 child:需要做动画的 widgetbody: AnimatedLogo(animation: animation,child: FlutterLogo(),));}@overridevoid didUpdateWidget(AnimBuildDart oldWidget) {//重绘super.didUpdateWidget(oldWidget);}@overridevoid deactivate() {// 销毁super.deactivate();}@overridevoid dispose() {//移除super.dispose();animationController.dispose();}
}// AnimatedBuilder 模式的tween 动画组件
class AnimatedLogo extends StatelessWidget {Animation<double> animation;Widget child;//接受一个 动画 用于动画的 widgetAnimatedLogo({this.animation, this.child});//创建 AnimatedBuilder 设置传入的 动画 组件@overrideWidget build(BuildContext context) => AnimatedBuilder(animation: animation,child: child,builder: (context, child) =>//创建一个容器 包裹 " 用于动画的 widget",根据动画渐变值 改变其大小Container(child: child,height: animation.value,width: animation.value,),);
}

Flutter tween动画相关推荐

  1. Flutter Hero动画让你的APP页面切换充满动效 不一样的体验 不一样的细节处理

    优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力,当然也需要码农年轻灵活的思维. 本文章实现的Demo效果,如下图所示: 1 首先是页面的主体 在这里使用的是Scaffold脚手架来构建 ...

  2. Flutter 平移动画 — 4种实现方式

    系列文章 Flutter 旋转动画 - RotationTransition Flutter 平移动画 - 4种实现方式 Flutter 淡入淡出与逐渐出现动画 Flutter 尺寸缩放.形状.颜色. ...

  3. Flutter 自定义动画 — 数字递增动画和文字逐行逐字出现或消失动画

    系列文章 Flutter 旋转动画 - RotationTransition Flutter 平移动画 - 4种实现方式 Flutter 淡入淡出与逐渐出现动画 Flutter 尺寸缩放.形状.颜色. ...

  4. 【Flutter】动画学习(二) Animation

    文章目录 介绍 基础动画 Animation AnimationController TweenAnimation CurvedAnimation AnimatedWidget FadeTransit ...

  5. 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

    Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...

  6. android 左移动画_Android研究院之游戏开发Tween动画的实现(十九)

    今天和大伙讨论一下Android开发中的Tween动画的实现.首先它和上一章我们讨论的Frame动画同属于系统提供的绘制动画的方法.Tween动画主要的功能是在绘制动画前设置动画绘制的轨迹,包括时间, ...

  7. Android动画之Tween动画实战

    Android动画分为Tween动画和Frame动画,上一节通过一个实例介绍了Frame动画,本节将介绍Tween动画.Tween可以把对象进行缩小.放大.旋转和渐变等操作. Tween动画有四个主要 ...

  8. flutter 透明度动画_Flutter中的动画填充+不透明度动画✨

    flutter 透明度动画 Flutter SDK provides us with many widgets which help us in animating elements on scree ...

  9. android 同根动画_android 动画系列 (1) - tween 动画(view动画)

    这是我这个系列的目录,有兴趣的可以看下: android 动画系列 - 目录 tween 动画早些时候我们也叫补间动画(我也不知道为啥),现在也有叫 view 动画的.tween动画是2.X 时代的产 ...

  10. 【Android】两种动画介绍(Tween动画、Frame动画)

    Android中的动画类型有两种,一种是Tween动画.还有一种是Frame动画.Tween动画,这种实现方式可以使视图组件移动.放大.缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法, ...

最新文章

  1. Django源码分析10:makemigrations命令概述
  2. php 61850,南瑞内部61850培训教程很好很强大-系统集成文档类资源
  3. [HNOI2016]最小公倍数
  4. CSS样式特点及优先级
  5. 微信公众号之微信买单
  6. C和指针之动态内存分配malloc、calloc、realloc简单使用和区别
  7. P1314,jzoj3028-聪明的质监员【二分答案,前缀和】
  8. 面试了8家公司,他们问了我这些机器学习题目……
  9. 敏捷转型谁先动:老总,项目经理or团队
  10. chrome浏览器安装网页测试插件postman的图文步骤记录
  11. Redis 主从 keepalived高可用 实现 VIP 自动漂移
  12. 光伏并网matlab,基于MATLAB的光伏并网设计
  13. php 判断是否在线,关于判断用户是否在线的问题!!!
  14. if函数多个条件怎么用c语言,条件函数怎么用(if函数多个条件怎么用)
  15. Quartus-II 三种方式进行D触发器仿真
  16. python面板数据分析代码_【译】用python做计量之面板数据模型
  17. 越狱软件可带来千万量级用户
  18. 机器学习第六课part1(最小二乘,L1,L2正则)
  19. 385高校毕业设计选题
  20. Python语言基础编程

热门文章

  1. 读书笔记-项目计划、进度与控制
  2. F5安全专栏 | 什么是零信任架构(ZTA)?
  3. preempt_disable导致的cyclictest测试延时超标
  4. HDU5956 The Elder(树上斜率DP)
  5. AS400 资料并分享面经一
  6. CS61C Spring 2021笔记
  7. 在第四代计算机期间全世界逐步进入了,1、在第四代计算机期间内,计算机的应用逐步进入到.docx.docx...
  8. 分时线的9代表什么_一位从亏损到稳赚的老股民告诉你:为什么要打板?
  9. Spring Data Elasticsearch 基本语法及使用
  10. idea打断点是白色的