动画Animation开发指南-动画基础类
一、
二、在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开发指南-动画基础类相关推荐
- Android10打断动画,Android开发(10) 动画(Animation)
概述 Android SDK介绍了两种Animation: Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果,即是一种 渐变动画 ,或者说 补间动画. ...
- creator小功能----关于帧动画Animation和骨骼动画Skeleton一些有趣的东西
动画是app中经常要用到的,尤其是游戏中,可以增强表现效果. 那么在creator中,怎么使用和实现动画效果呢? 动画获取的方式: 第一种,编辑器绑定 //1.编辑器绑定anim: {type: cc ...
- Element-UI开发指南--动画和组件基础(二)
文章目录 内置过渡动画 fade 淡入淡出 zoom 缩放 collapse 展开折叠 组件 Layout 布局 基础布局 分栏间隔 混合布局 分栏偏移 对齐方式 响应式布局 基于断点的隐藏类 Row ...
- 十四、CSS 3新特性详解(二)——2D转换(transform)、动画(animation)、动画序列
HTML5 第二天 一.rotate 2d旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转 使用步骤: 给元素添加转换属性 transform 属性值为 rotate(角度) 如 transfor ...
- Unity中如何用脚本调用动画(Animation)
public class Cube : MonoBehaviour {private Animation animation;// Use this for initializationvoid St ...
- IOS开发教程第一季之02UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
1.创建并实现手势的基本步骤 点击手势 #import "ViewController.h"@interface ViewController () @property (weak ...
- 微信小程序开发之——动画-Animation(3)
一 概述 wx.createAnimation创建Animation动画实例 wx.createAnimation时,参数的常用属性 动画常见动作 动画执行完成之后导出动画队列(export) 二 w ...
- CSS3 动画 animation属性
@keyframes只是用来声明一个动画,而动画本身并不执行任何操作.因此,如果希望为某个元素应用动画,还需要把动画与该元素关联起来. 如果一个动画没有与任何元素关联,它就不会被调用,也就不会产生动画 ...
- CSS: Animation CSS:动画 Lynda课程中文字幕
CSS: Animation 中文字幕 CSS:动画 中文字幕CSS: Animation CSS动画为将运动引入交互式项目提供了一种全新的方式 这是网页设计师和开发人员的核心技能,也是用户期望从现代 ...
最新文章
- android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)
- HDU1166 敌兵布阵 单点更新 区间查询
- json.decoder.JSONDecodeError: Expecting value: line 28 column 5 (char 731)
- 14 代码分割之lazy:Suspense与路由懒加载
- 携带cookie进行数据请求
- 查找会议论文的会议地址
- 聊聊我们在业务链路升级中做的数据洞察
- 华为python有必要学吗_【华为云技术分享】这个 Python 库有必要好好学学
- Java局域网对战游戏、天气预报项目
- 小米机器人 尘盒配件_石头扫地机器人T6评测:一款提升生活辛福感的宝物
- CentOS 7.1.1503 varnish动静分离反代用户请求
- 数据结构单链表的创建和遍历(后插法)
- PC微信防撤回多开补丁 v0.6
- Matlab获取线粒体序列及核苷酸初步分析
- dubbo工程结构分析
- 函数周期表丨筛选丨值丨CALCULATE
- 2021年系统集成项目管理工程师证书领取
- hander机制深入理解
- HTML5+CSS3小实例:酷炫的ANIPLEX文字特效
- python 日期字符串转换时间戳
热门文章
- Dynamic Provisioning原理分析
- 1.24版本k8s集群安装部署rook-ceph存储集群
- 网络写作从入门到人生巅峰
- 【STM32 HAL】HAL库和CubeMX
- Is the server running on host localhost (::1) and accepting TCP/IP connections on port 5
- 在小公司加班了3年,领导竟要优化我?最后愤而上岸阿里
- springboot框架学习 - 自定义 starter
- 运算放大器的功耗计算
- http://pop.pcpop.com/090307/5131884.html
- 鸿蒙系统智能电视用时间长了会不会卡,电视越用越卡?原来是存储满了 教你解决...