一、

二、在Flutter中有哪些类型的动画?

(可根据官方提供的Flutter gallery中的示例来学习动画)

在Flutter中动画分为两类:基于tween或基于物理的。

--补间(Tween)动画:在补间动画中,定义了开始点和结束点、时间线以及定义转换时间和速度的曲线。然后由框架计算如何从开始点过度到结束点。

--基于物理的动画:在基于物理的动画中,运动被模拟为与真实时间的行为像似。例如,当你掷球时,它在何处落地,取决于抛球速度又多快、球又多重、距离地面有多远。

接在弹簧上的球落下(并弹起)与连接到绳子上的球放下的方式也是不同。

三、如何使用动画库中的基础类给widdget添加动画?

Animation:是Flutter动画库中的一个核心类,它生成指导动画的值

CurvedAnimation:Animation的一个子类,将过程抽象为一个非线性曲线

AnimationController:Animation的一个子类,用来管理Animation

Tween:在正正执行动画的对象所使用的数据范围之间生成值。例如,Tween可生成红到蓝之间的色值,或者从0到255

1、Animation

在Flutter中,Animation对象本身和UI渲染没有任何关系。Animation是一个抽象类,它拥有其当前值和状态(完成或停止)。其中一个比较常用的Animation类是Animation<double>.

Flutter中的Animation对象是一个在一段时间内依次生成一个区间之间值的类。Animation对象的输出可以是线性的、曲线的、一个步进函数或者任何其他可以设计的映射。根据Animation对象的控制方式,动画可以反向运动,甚至可以在中间切换方向。

-Animation还可以生成除double之外的其它类型值,如:Animation<Color>或Animation<Size>

-Animation对象有状态。可以通过访问其value属性获取动画的当前值

-Animation对象本身和UI渲染没有任何关系

2、CurvedAnimation

CurvedAnimation将动画过程定义为一个非线性曲线。

3、AnimationController

AnimationController是一个特殊的Animation对象,在屏幕刷新的每一帧,就会生成一个新的值。默认情况下,AnimationController在给定的时间内会线性的生成从0.0到1.0的数字。例如,下面的代码创建一个Animation对象:

AnimationController派生自Animation<double>,因此可以在需要Animation对象的任何地方使用。但是,AnimationController具有控制动画的其他方法:

-forward():启动动画

-reverse({double from}):倒放动画

-reset():重置动画,将其设置到动画的开始位置

-stop({bool canceled=true}):停止动画

当创建一个AnimationController时,需要传递要给vsync参数,存在vsync时会防止屏幕外动画消耗不必要的资源,可以将stateful对象作为vsync的值。

注意:在某些情况下,值(position,值动画的当前值)可能会超出AnimationController的0.0-1.0的范围。例如,fling()函数允许您提供速度(velocity)、力量(force)、position(通过Force对象)。位置(position)可以是任何东西,因此可以在0.0到1.0范围之外。CurvedAnimation生成的值也可以超出0.0到1.0的范围。根据选择的曲线,CurvedAnimation的输出可以具有比输入更大的范围。例如,Curves.elasticln等弹性曲线会生成大于或小于默认范围的值。

四、Tween

默认情况下,AnimationController对象的范围从0.0到1.0。如果您需要不同的范围或者不同的数据类型,则可以使用Tween来配置动画以生成不同的范围或数据类型的值。例如,以下示例,Tween生成从-200.0到0.0的值:

Tween是一个无状态(stateless)对象,需要begin和end值。Tween的唯一职责就是定义从输入范围到输出范围的映射。输入范围通常为0.0到1.0,但这不是必须的。

Tween继承自Animatable<T>,而不是继承自Animation<T>.Animatable与Animation相似,不是必须输出double值。例如,ColorTween指定两种颜色之间的过渡。

Tween对象不存储任何状态。相反,它提供了evaluate(Animation<double>animation)方法将映射函数应用于动画当前值。Animation对象的当前值可以通过value()方法取到。evaluate函数还执行一些其它处理,例如分别确保在动画值为0.0和1.0时返回开始和结束状态。

Tween.animate

要使用Tween对象,可调用它的animate()方法,传入一个控制器对象。例如,以下代码在500毫秒内生成从0到255的整数值。

注意animate()返回的是一个Animation,而不是一个Animatable。

以下示例构建了一个控制器、一条曲线和一个Tween:

动画Animation开发指南-动画基础类相关推荐

  1. Android10打断动画,Android开发(10) 动画(Animation)

    概述 Android SDK介绍了两种Animation: Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果,即是一种 渐变动画 ,或者说 补间动画. ...

  2. creator小功能----关于帧动画Animation和骨骼动画Skeleton一些有趣的东西

    动画是app中经常要用到的,尤其是游戏中,可以增强表现效果. 那么在creator中,怎么使用和实现动画效果呢? 动画获取的方式: 第一种,编辑器绑定 //1.编辑器绑定anim: {type: cc ...

  3. Element-UI开发指南--动画和组件基础(二)

    文章目录 内置过渡动画 fade 淡入淡出 zoom 缩放 collapse 展开折叠 组件 Layout 布局 基础布局 分栏间隔 混合布局 分栏偏移 对齐方式 响应式布局 基于断点的隐藏类 Row ...

  4. 十四、CSS 3新特性详解(二)——2D转换(transform)、动画(animation)、动画序列

    HTML5 第二天 一.rotate 2d旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转 使用步骤: 给元素添加转换属性 transform 属性值为 rotate(角度) 如 transfor ...

  5. Unity中如何用脚本调用动画(Animation)

    public class Cube : MonoBehaviour {private Animation animation;// Use this for initializationvoid St ...

  6. IOS开发教程第一季之02UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例

    1.创建并实现手势的基本步骤 点击手势 #import "ViewController.h"@interface ViewController () @property (weak ...

  7. 微信小程序开发之——动画-Animation(3)

    一 概述 wx.createAnimation创建Animation动画实例 wx.createAnimation时,参数的常用属性 动画常见动作 动画执行完成之后导出动画队列(export) 二 w ...

  8. CSS3 动画 animation属性

    @keyframes只是用来声明一个动画,而动画本身并不执行任何操作.因此,如果希望为某个元素应用动画,还需要把动画与该元素关联起来. 如果一个动画没有与任何元素关联,它就不会被调用,也就不会产生动画 ...

  9. CSS: Animation CSS:动画 Lynda课程中文字幕

    CSS: Animation 中文字幕 CSS:动画 中文字幕CSS: Animation CSS动画为将运动引入交互式项目提供了一种全新的方式 这是网页设计师和开发人员的核心技能,也是用户期望从现代 ...

最新文章

  1. CI框架如何删除地址栏的 index.php
  2. 【转】】Vue项目部署tomcat,刷新报错404解决办法
  3. 宝藏文章!【CCNA命令大全】
  4. 急速收藏:4套iOS SDK的H5打通方案
  5. MIUI坑(MIUI7输入框无响应)
  6. 初识莫队——小Z的袜子
  7. 计算机二级c语言考点分析,计算机二级C语言考点分析.doc
  8. 第二十四期:揭秘:为什么电脑越用越卡 大型破案现场
  9. 如何在旅途中提升 MacBook 电池电量?
  10. Jersey框架简单实践(一)
  11. 基于bim二次开发的智能楼宇管理系统
  12. Unity发布WebGL后跳转页面的问题
  13. uniapp 微信授权,微信分享,微信支付,微信跳转app集成
  14. 山东省第二届数据应用创新创业大赛-济南赛场赛题发布
  15. mysql identity属性_Mysql中Identity 详细介绍
  16. Arrays.sort排二维数组
  17. 阿里云播放器AliyunPlayer的走马灯组件的位置
  18. GB/T 28181-2011、2016、2022变更对比
  19. UG NX 12装配——组件位置:装配约束
  20. 读取文件并输出,输出时将小写字母转为大写

热门文章

  1. 莆田天气html代码,福建天气预报,福建莆田天气预报
  2. vs2015.3.ent_chs.iso 下载地址
  3. 如何在GitHub上克隆项目(超详细的图文并解)
  4. github上好的开源项目(一)
  5. linux怎么强制重启不了,Linux强制重启
  6. Windows: net和shutdown命令重启远程电脑
  7. Alian解读SpringBoot 2.6.0 源码(八):启动流程分析之刷新应用上下文(中)
  8. ML(机器学习)神经网络,阶跃函数,sigmoid激活函数
  9. Go语言(下载、安装、环境配置、GoLand编译器安装、编写HelloWorld)
  10. 数伏食用黄瓜和鸡蛋治慢性支气管炎