跳到主要内容

Easing Animation 缓动动画

基于 Origami 封装的动画模块,方便设计师快速的通过 Easing 预设设置动画参数,减少设计学习成本,提高和开发的协同和沟通效率。


简介

Easing Animation 缓动动画是指在动画效果中使用不同的加速度来改变动画的运动轨迹,以达到自然、流畅的效果。

场景

  • 动画过渡:当元素之间需要切换时,可以使用结构化陈述缓动动画来实现过渡效果,使页面转换更加自然;
  • 弹出、隐藏元素:结构化陈述缓动动画可以使弹出、隐藏元素的效果更加平滑、流畅;
  • 拉伸、缩放元素:缩放元素时,可以使用结构化陈述缓动动画来实现平滑的变化效果;
  • 滚动、切换页面:滚动页面时,使用结构化陈述缓动动画可以实现更加自然的滚动效果,使用户体验更加舒适。

使用建议

  • 基础缓动可以使用Cubic-bezier类型。
  • 卡通插图等非 UI 元素可以使用 Elastic 类型。
  • 对于运动中含有快速变化的可以使用 Linear 类型。

基本预设

  React Native
timing()
  Taro
TimingFunction
ValueUsage
linear()linearcubic-bezier(0,0,1,1)颜色、透明度等变化
ease()easecubic-bezier(.25,.1,.25,1)元素在画面内运动
ease-in()ease-incubic-bezier(.42,0,1,1)元素出场
ease-out()ease-outcubic-bezier(0,0,.58,1)元素入场
ease-in-out()ease-in-outcubic-bezier(.42,0,.58,1)--
bezier()--custom--

高级预设

高级预设暂只支持 React Native,暂不支持 Taro。

React NativeINOUTIN-OUT
quad()easeInQuad
cubic-bezier(0.11, 0, 0.5, 0)
easeOutQuad
cubic-bezier(0.5, 1, 0.89, 1)
easeInOutQuad
cubic-bezier(0.45, 0, 0.55, 1)
cubic()easeInCubic
cubic-bezier(0.32, 0, 0.67, 0)
easeOutCubic
cubic-bezier(0.33, 1, 0.68, 1)
easeInOutCubic
cubic-bezier(0.65, 0, 0.35, 1)
poly()easeInQuart
cubic-bezier(0.5, 0, 0.75, 0)
easeOutQuart
cubic-bezier(0.25, 1, 0.5, 1)
easeInOutQuart
cubic-bezier(0.76, 0, 0.24, 1)
sin()easeInSine
cubic-bezier(0.12, 0, 0.39, 0)
easeOutSine
cubic-bezier(0.61, 1, 0.88, 1)
easeInOutSine
cubic-bezier(0.37, 0, 0.63, 1)
circle()easeInCirc
cubic-bezier(0.55, 0, 1, 0.45)
easeOutCirc
cubic-bezier(0, 0.55, 0.45, 1)
easeInOutCirc
cubic-bezier(0.85, 0, 0.15, 1)
exp()easeInExpo
cubic-bezier(0.7, 0, 0.84, 0)
easeOutExpo
cubic-bezier(0.16, 1, 0.3, 1)
easeInOutExpo
cubic-bezier(0.87, 0, 0.13, 1)
back()easeInBack
cubic-bezier(0.36, 0, 0.66, -0.56)
easeOutBack
cubic-bezier(0.34, 1.56, 0.64, 1)
easeInOutBack
cubic-bezier(0.68, -0.6, 0.32, 1.6)
bounce()easeInBounce
easeOutBounce
easeInOutBounce
elastic()easeInElastic
easeOutElastic
easeInOutElastic

设计模块

基于 Origami,封装好的动画模块。

Easing Animation

Easing Animation 通过调整动画的速率,使得动画更具生动性,更自然。

设计师可以根据产品所使用的框架,快速的切换并选择预设好的动画参数。

Easing Animation

  • Number0
  • FrameReact Native
  • CurveLinear
  • Duration0.4s
  • Bezier Value(0,0,1,1)
  • 0

设计参数

参数
Number一个数值,表示动画的开始和关闭
Frame动画应用的场景:React Native、Taro、微信小程序、iOS、Android
Curve如上表格中的基本预设和高级预设
Duration持续时间,xx 秒
Bezier Value选择 Curve 类型后,会显示相应 Curve 的贝塞尔数值。

开发适配

框架方法说明设计支持
React NativeEasingReact Native Easing
iOSUICubicTimingParametersApple Animation
Android------
Web----
FlutterCurves class Flutter Animaton Curves
TaroTaro.createAnimationTaro Animation

Cubic Bezier Animation

使用贝塞尔曲线来定义动画轨迹,提供了更多的灵活性和控制力,可以创建各种不同的动画效果。

Cubic Bezier Animation 动画通常用于更加复杂和多样化的动画效果,比如弹跳、抛物线等。

Cubic Bezier Animation

  • Number0
  • Duration0.4sX0Y0
  • 0.17
  • 0.17
  • 0
  • 1
  • 0
  • path

设计参数

参数
Number一个数值,表示动画的开始和关闭
Duration持续时间,xx 秒
Bezier Number0.17, 0.17, 0, 1

开发适配

框架方法说明设计支持
React NativeEasingReact Native Easing
iOSUICubicTimingParametersApple Animation
Android------
Web----
FlutterCurves class Flutter Animaton Curves
TaroTaro.createAnimationTaro Animation

区别特点

Easing Animation 在不同场景中使用的区别和特点:

  1. 用户界面:Easing Animation 可以用于创建用户界面的动画效果,比如弹出菜单、滑动面板等。
  2. 数据可视化:Easing Animation 可以在数据可视化中使用,比如图表、仪表盘等。它可以使得数据的变化更加平滑,更容易理解。
  3. 游戏:Easing Animation 在游戏开发中也很常用,比如创建物体的运动、粒子特效等。
  4. ......

总的来说,Easing Animation 可以让动画更加平滑、生动,使得用户界面和数据变化更容易理解。

相关参考

Taro Animation

React Native Animation

小程序动画

小程序 Worklet 动画

Flutter Animation

Flutter Animation Library