设计流程

将实践心得、工具使用、实现技巧嵌入到你自己的工作流程中

迭代与实现

与整个团队协同工作,让动画从早期的草稿原型逐步转化,最后呈递用户以愉悦的使用体验。

实践 找出动画设计的常规实现方式。

  • 1

    定义

    标明出动画设计量
    A page with sections highlighted in teal

    不管是线框图设计、高保真原型设计或者编码,在此之前,花一些时间去定义界面中一些需要添加动画的关键性交互,这样可以有效的提高使用体验。在一份文档中集中标注,写清楚哪些交互需要动画效果,这样有助于整个团队理解,也能让大家知道哪个动画是最重要的,应该最先去设计。

  • 2

    设计

    选择工具,开始简单的设计尝试
    A page with an arrow pointing left, implying some of the sections in green are moving left

    一旦搞清楚哪些交互需要添加动效后,选择你熟悉的工具,开始思考如何让元素进行运动。使用基本属性,例如位置和缩放,结合时间关键帧还有时间顺序关系。有些人可能在最开始的时候习惯使用纸笔来描述方法,而还有些人可能会喜欢在代码中使用简单的形状动画探索。

  • 3

    原型

    调用视觉样式,差异化迭代探索概念
    A page with a section displaced from the other sections, and a sample movement path in a right column

    现在你对要设计怎样的动画效果已经有所理解,那么这时候需要使用不同的工具来进行差异化迭代——尝试使用不同的速度、缓动曲线以及图层运动次序。例如,在动画的中间画中尝试研磨细节,细细品味不同感受,以便探索出不同的设计概念。

  • 4

    测试

    将原型放到用户手中
    A mobile device with two sections pointed out, one with a check mark and one with an ex

    获取用户的使用反馈,一点是整体的使用体验,另外一点是关于动画的缓动曲线。注意动画一定要测试一下,是否符合可用性规范,这样你的动画才能用的舒心,操作起来有效。

  • 5

    提炼

    根据反馈,调整设计
    A page with writing on the left and a picture of a mobile device on the right

    分析用户测试中的用户反馈,仔细微调设计细节。如果不打算推倒重来,只是小修小补的话,那么和工程师一起在代码里面修改会比在设计软件和原型中修改要容易一些。

  • 6

    实现

    通过代码将动画实现
    A hand holding a phone and sliding one section with the thumb

    和开发者和工程师保持良好的关系,让他们从设计的开始就参与进来。实现伟大的动效设计需要设计者和开发者大量的沟通,才能将设计意图转化为屏幕中真实的运动,而你的设计很可能会依据实现的可行性而进行修改。


工具 可以在不同流程中帮助你进行设计

初期创意

Three screens, the top of which has three sample mobile screens with green sections highlighted
草图设计

如果你有了草图设计,画一些故事板或概念,那么原型和动画可以很快的设计出来。用草图来画出动画的过渡元素,可以有效的展示界面是如何过渡转场的。

ADOBE PHOTOSHOP®

Photoshop可以创建低保真动画gif,通过这些序列帧大家可以讨论设计。PS是非常棒的工具,因为之前我们设计静态就是在PS中完成的。

原型设计

A screen with a sample mobile devide screen on the left and editing options on the right
Keynote®

在 Keynote 中,你可以构建中等保真级别的动画,通过使用 “magice move” 和其他内置动画效果。可以用来在设计的早期制作原型,定义运动感和图层运动顺序。

Adobe® After Effects

通过使用AE,你可以构建高保真动画,但是没有交互。用来展示高保真设计概念很不错,但是所构建的动画很有可能在实现流程中发现可行性问题。

Axure® RP

使用Axure RP的内置动画效果,你可以构建中等保真级别的动画,跟Keynote非常像素,可以调节时间等动画参数。

Framer

Framer 是一款针对桌面端和移动端的交互工具,但是需要一定的开发知识。Framer 的代码在实际实现中并不可用,但是 Framer 很擅长制作一些微交互。

Adobe® Edge Animate

使用 Edge Animate,你可以构建高保真动画,还能够加入基础的交互。Edge 支持导出 HTML 和 Javascript ,但是实际很难使用这些代码,而且 PS 和 AI 的静态素材也很难导入。

Origami®

Origami 是基于 QC 构建的动画框架,和 Framer 非常相似,它的动画功能非常强劲,非常适合用来设计微交互。Origami 是移动端原型设计的利器。

实现

Two screens, the left has text and the right has an image of a mobile device
CSS

CSS 可以构建高保真动画,所构建出的效果可以直接使用。CSS 既可以用来做原型,也可以直接实现。

Swift

Swift 是 iOS 和 OS X的编程语言。Swift可以直接实现动画。

Javascript

Javascript 可以创建高保真动画,代码也可以服用。Javascript 有很多的库和框架,让设计者可以更方便的处理界面元素,例如 Snap.svg 和 GSAP。

QuartzCode

QuartzCode 是一款动画工具,你可以随意的迭代动画。自动实时生成方便 iOS 和 OS X 使用的 Swift 和 Objective-C 代码。


转化 视频原型为真实效果

当考虑到动画实现的时候,设计师和开发者必须对动画的设计理念保持高度的一致,无论是对原型的理解,还是实现的一些知识。将概念转化为代码往往需要灵活的思考方式,因为代码往往有多种多样的方式实现动画。

下面提供了一些简单的步骤,以便开发和设计合作。一般来说,需要确定元素的属性,动画持续时间,关键帧,动画曲线,以及延迟。

动画属性

属性代表着物体随时间变化的变化特点。这个地方可以参考IBM动画设计规范基础部分中的 构建模块

我们来看一下顶部导航的这个动画案例中元素属性的改变。当悬停状态下,顶部导航栏对应选项下方的暗条增高,然后在两个链接之间水平滑动。点击状态下,按条增高。这个动画主要使用了元素的比例和位置属性。

一旦在文档中记录了属性后,下面就需要根据属性随时间的变化记录关键帧。关键帧的记录非常简单,只需要在时间的关键节点——也就是属性变化的节点上记录时间。

定义关键帧

关键帧代表着在某个特定时间状态下,记录参数的帧,可以用来表述不同的属性(例如位置、缩放、不透明度、旋转等),关键帧定义了单个动作的开始和结束状态的属性变化。

开发者一半会把关键帧写成百分比,这和我们在设计中根据时间轴伤的时间帧来设置关键帧的思维模式不同。将关键帧转化为百分比 的好处是,整个动画可以按时间成比例缩放,从而调节快慢。

根据上面的顶部导航栏案例,下面提供了三个关键帧,展示了元素是如何随时间变化的。

  • 关键帧 1: 高度增加6px
  • 关键帧 2: 水平位移变换
  • 关键帧 3: 高度增加100%

当从AE或其他工具中提取关键帧时,时间轴可以提供很直观的动画流程展示,也方便设计者标注动画。

基于状态的改变,动画很可能会相应的提供反馈。在CSS中可以定义开始和结束状态。例如上面的顶部导航栏案例,类的改变由Javascript处理。这也就意味着由 CSS 和 Javscript 定义的代码可以触发动画。

    
nav ui li:hover {
  height: 6px;
  transform: translateX(0);
}

nav ul li:active {
  height: 100%;
}

使用CSS,关键帧可以通过不同的类来定义,CSS转场可以处理动画曲线,处理属性随时间变化的特性。

在 CSS 关键帧技术中,更复杂的动画不仅仅要处理“起点和终点”。而在设计中处理转场效果和动画时,所要添加的关键帧和编程语言的实现思路也是不同的。但是,不管是时间轴设计,还是编程,在“属性与时间”上的核心理念是一致的。

持续时间

当标注完关键帧后,需要开始标注动画的持续时间。持续时间表示了动画所持续的时间长度。在设定持续时间的时候,需要考虑可用性和交互性,依此来设定持续时间。动画的持续时间应该让用户感觉自然、反馈迅速。

持续时间的计算可以基于FPS,首先了解动画完成所需要的帧数。在AE文件中,你可以观察到帧速率(在合成设置中,Command+K)。而在QuickTime视频中,帧速率可以在影片检查器(Command + I)中找到。

动画曲线函数/贝塞尔动画插值曲线

完成了上面几步的标注和设定之后,就已经完成了动画实现的基础部分,不过还需要使用动画曲线来增加动画的细腻感。动画曲线函数基于数学表达式来创建贝塞尔曲线,这条曲线可以用图标来展现,展示了属性变化的加速和减速。

在网上有很多的资源可以帮助设计者快速构建动画曲线,例如 cubic-bezier.com.

如果需要从视频中学习动画曲线,那么可以看IBM动画设计规范的 Timing section ,以便理解在什么样的动画中应该使用什么养的缓动曲线。这些视频会帮助你理解动画曲线,从而在实际产品中实验或实践。

A cubic bezier on a grid(.8,0,.2,1)
Cubic Bezier
(.8,0,.2,1)

相关阅读 ,动画设计和实现的有关知识

下面提供了一些文档和文章,无论你的经验是否丰富,设计细节是否细腻。只要根据自己的需求深度挖掘,在这些文章中都可以找到很多有用的内容。

Back to top of page