一、

二、在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. android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)
  2. HDU1166 敌兵布阵 单点更新 区间查询
  3. json.decoder.JSONDecodeError: Expecting value: line 28 column 5 (char 731)
  4. 14 代码分割之lazy:Suspense与路由懒加载
  5. 携带cookie进行数据请求
  6. 查找会议论文的会议地址
  7. 聊聊我们在业务链路升级中做的数据洞察
  8. 华为python有必要学吗_【华为云技术分享】这个 Python 库有必要好好学学
  9. Java局域网对战游戏、天气预报项目
  10. 小米机器人 尘盒配件_石头扫地机器人T6评测:一款提升生活辛福感的宝物
  11. CentOS 7.1.1503 varnish动静分离反代用户请求
  12. 数据结构单链表的创建和遍历(后插法)
  13. PC微信防撤回多开补丁 v0.6
  14. Matlab获取线粒体序列及核苷酸初步分析
  15. dubbo工程结构分析
  16. 函数周期表丨筛选丨值丨CALCULATE
  17. 2021年系统集成项目管理工程师证书领取
  18. hander机制深入理解
  19. HTML5+CSS3小实例:酷炫的ANIPLEX文字特效
  20. python 日期字符串转换时间戳

热门文章

  1. Dynamic Provisioning原理分析
  2. 1.24版本k8s集群安装部署rook-ceph存储集群
  3. 网络写作从入门到人生巅峰
  4. 【STM32 HAL】HAL库和CubeMX
  5. Is the server running on host localhost (::1) and accepting         TCP/IP connections on port 5
  6. 在小公司加班了3年,领导竟要优化我?最后愤而上岸阿里
  7. springboot框架学习 - 自定义 starter
  8. 运算放大器的功耗计算
  9. http://pop.pcpop.com/090307/5131884.html
  10. 鸿蒙系统智能电视用时间长了会不会卡,电视越用越卡?原来是存储满了 教你解决...