Flutter tween动画
需求:做一个图标放大动画
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动画相关推荐
- Flutter Hero动画让你的APP页面切换充满动效 不一样的体验 不一样的细节处理
优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力,当然也需要码农年轻灵活的思维. 本文章实现的Demo效果,如下图所示: 1 首先是页面的主体 在这里使用的是Scaffold脚手架来构建 ...
- Flutter 平移动画 — 4种实现方式
系列文章 Flutter 旋转动画 - RotationTransition Flutter 平移动画 - 4种实现方式 Flutter 淡入淡出与逐渐出现动画 Flutter 尺寸缩放.形状.颜色. ...
- Flutter 自定义动画 — 数字递增动画和文字逐行逐字出现或消失动画
系列文章 Flutter 旋转动画 - RotationTransition Flutter 平移动画 - 4种实现方式 Flutter 淡入淡出与逐渐出现动画 Flutter 尺寸缩放.形状.颜色. ...
- 【Flutter】动画学习(二) Animation
文章目录 介绍 基础动画 Animation AnimationController TweenAnimation CurvedAnimation AnimatedWidget FadeTransit ...
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...
- android 左移动画_Android研究院之游戏开发Tween动画的实现(十九)
今天和大伙讨论一下Android开发中的Tween动画的实现.首先它和上一章我们讨论的Frame动画同属于系统提供的绘制动画的方法.Tween动画主要的功能是在绘制动画前设置动画绘制的轨迹,包括时间, ...
- Android动画之Tween动画实战
Android动画分为Tween动画和Frame动画,上一节通过一个实例介绍了Frame动画,本节将介绍Tween动画.Tween可以把对象进行缩小.放大.旋转和渐变等操作. Tween动画有四个主要 ...
- flutter 透明度动画_Flutter中的动画填充+不透明度动画✨
flutter 透明度动画 Flutter SDK provides us with many widgets which help us in animating elements on scree ...
- android 同根动画_android 动画系列 (1) - tween 动画(view动画)
这是我这个系列的目录,有兴趣的可以看下: android 动画系列 - 目录 tween 动画早些时候我们也叫补间动画(我也不知道为啥),现在也有叫 view 动画的.tween动画是2.X 时代的产 ...
- 【Android】两种动画介绍(Tween动画、Frame动画)
Android中的动画类型有两种,一种是Tween动画.还有一种是Frame动画.Tween动画,这种实现方式可以使视图组件移动.放大.缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法, ...
最新文章
- Django源码分析10:makemigrations命令概述
- php 61850,南瑞内部61850培训教程很好很强大-系统集成文档类资源
- [HNOI2016]最小公倍数
- CSS样式特点及优先级
- 微信公众号之微信买单
- C和指针之动态内存分配malloc、calloc、realloc简单使用和区别
- P1314,jzoj3028-聪明的质监员【二分答案,前缀和】
- 面试了8家公司,他们问了我这些机器学习题目……
- 敏捷转型谁先动:老总,项目经理or团队
- chrome浏览器安装网页测试插件postman的图文步骤记录
- Redis 主从 keepalived高可用 实现 VIP 自动漂移
- 光伏并网matlab,基于MATLAB的光伏并网设计
- php 判断是否在线,关于判断用户是否在线的问题!!!
- if函数多个条件怎么用c语言,条件函数怎么用(if函数多个条件怎么用)
- Quartus-II 三种方式进行D触发器仿真
- python面板数据分析代码_【译】用python做计量之面板数据模型
- 越狱软件可带来千万量级用户
- 机器学习第六课part1(最小二乘,L1,L2正则)
- 385高校毕业设计选题
- Python语言基础编程
热门文章
- 读书笔记-项目计划、进度与控制
- F5安全专栏 | 什么是零信任架构(ZTA)?
- preempt_disable导致的cyclictest测试延时超标
- HDU5956 The Elder(树上斜率DP)
- AS400 资料并分享面经一
- CS61C Spring 2021笔记
- 在第四代计算机期间全世界逐步进入了,1、在第四代计算机期间内,计算机的应用逐步进入到.docx.docx...
- 分时线的9代表什么_一位从亏损到稳赚的老股民告诉你:为什么要打板?
- Spring Data Elasticsearch 基本语法及使用
- idea打断点是白色的