创建Material Design语言是为了通过为交互式元素提供视觉提示来解决较小屏幕上的平面设计问题。 在本文中,您将学习一些动画的基本概念,以及如何将它们用于为元素提供自然,逼真的感觉。 您将了解如何使用这些想法来取悦用户,同时帮助他们了解您应用的用户界面。
物质运动的核心思想
Google建议所有动画应具有响应性,自然性,感知性和故意性。 屏幕上的对象应像由特殊材料制成的一样工作,其自身的重量和体积决定了它们在屏幕上的移动和动作。
发生的动画应与动作直接相关,并应具有目的性和活力。 它们应该是有意义的,并通过有目的并服务于该目的来帮助指导用户完成您的应用程序。 动画应该为您的用户创建上下文,并帮助引导他们的眼睛在屏幕上,以便他们知道您的应用程序可能带来的好处。
运动应该更关注从点A到点B所花费的时间,而不是要覆盖的距离。 距离将根据屏幕的大小而变化,但是对象的速度将增加重点并帮助用户了解正在发生的事情。
当需要删除一个对象并将另一个对象添加到屏幕(例如,按钮从播放变为暂停)时,应将第一个对象变形为第二个对象。 同样,您可以通过更改屏幕项目的颜色和Alpha来表示对象的重大变化。 这样,用户可以知道发生了什么变化,并且您可以强调应用程序中可供用户交互的内容。
生命的幻觉
理解自然动画的最大参考书之一是弗兰克·托马斯(Frank Thomas)和奥利·约翰斯顿(Ollie Johnston)撰写的《生命的幻觉》,该书详细介绍了迪士尼在其动画电影中使用的动画原理。 托马斯和约翰斯顿在书中概述了12条基本原则。 在本节中,我们将讨论其中一些原理以及它们如何与材料设计相关。
壁球和拉伸
当一个对象进行一个动作时,它会根据其材质来显示其形状的变化。
壁球和拉伸原理代表了这一概念,可以通过考虑弹跳球来最好地说明这一点。 当外力作用在球上时,例如重力或向上的加速度,球将伸展。 当物体撞击地面时,它将聚拢并挤压到地面。 在应用程序中移动并与表面互动的对象应该使用此想法,以便在对象移动时给自己带来重量和体积的错觉。
![动画中的拉伸和压扁原理](https://i-blog.csdnimg.cn/blog_migrate/05a24857d1bbeb551fe163f63fa6ac7a.png)
预期
不应采取任何重大行动。 在应用中执行动画时,您应该执行另一个较小的操作,以产生主要动画。 此原则称为“预期”,它有助于防止用户询问“为什么会这样?”的情况。 自然运动通常从热身开始,而不是简单地开始。 在Android中,您可以使用AnticipateInterpolator
类创建一个动画,该动画首先备份一小段距离,然后再继续前进。
分期
暂存的目的是使您的内容对用户清晰易懂。 用户界面和动画应该自然而然,并锚定在核心任务或概念上,而不是让用户不确定为什么会以某种特定方式发生。 您一次只能执行一项主要操作,以使事情变得简单而又刻意。
贯彻和重叠行动
当移动的物体停止运动时,它并不会立即全部停止(不击中另一个固体物体,但这就是“拉伸”和“壁球”发挥作用的地方)。 在对象核心停止后,对象的附件将继续移动一小段时间。
在创建“材质”动画时,您应该尝试使用两个不同的位置:所需的停止点,以及距离稍远一点的停止点,动画可以完全停在该位置,然后弹回最终位置。 这样可以防止动画看起来平坦而机械。 可以使用BounceInterpolator
或OvershootInterpolator
类来完成这种动画。
慢进慢出
自然运动不会以一致的速度发生,您的动画也不会如此。
当物体从视场外移动并进入屏幕时,它应Swift移动,然后放慢速度直至到达其最终位置。 快速移动将吸引用户的注意力,并为他们提供足够的时间来注意它的最终位置。
相反,离开屏幕的对象应缓慢启动并加快其离开屏幕的速度。 这将使您的用户有足够的时间注意到对象正在移动,并且随着对象离开的速度加快,他们将了解他们应该停止关心屏幕上的该项目。
当对象从屏幕上的一个位置移动到另一位置而又不离开屏幕的任何位置时,您应该结合使用这两种想法,以便用户在动画保持自然感觉的同时看到正在发生的事情。 此原则也适用于列表,因为当用户猛击它们时,它们将快速滚动,然后减速直到停止。 当列表在各部分之间跳转时,其沉浸感就会降低,并变得机械起来。 您可以使用LinearOutSlowInInterpolator
, FastOutLinearInInterpolator
或FastOutSlowInInterpolator
添加这些动画效果。
弧线
除了极少数例外,自然运动会以弧形而不是精确的直线发生。 在屏幕上移动对象时,除了采用慢进和慢出原理外,还应尝试以弧形路径移动对象,以避免动画中出现机械的,不自然的感觉。 您可以使用Android ArcMotion
对象沿弯曲路径移动对象。
次要行动
次要动作是更小,更简单的动作,可支持主要动作的概念。 次要动作不应掩盖主要动作或比主要动作更有趣,因为它们仅是为了强调而存在。
辅助操作的一个示例是在Android应用程序中打开导航抽屉时。 抽屉滑动打开是主要动作,而汉堡图标箭头动画则是一种简单的效果,可以强调发生的事情而不会掩盖屏幕上的主要变化。
定时
处理动画时,时间就是一切。 如果动画移动得太慢或太快,用户将注意到某些东西感觉“关闭”。
重要的是要记住,材料设计要求对象看起来像是由某种材料制成的。 如果要让物体感觉像纸张在表面上滑动,则不应在屏幕上快速移动它。 可以理解,没有确定应用程序中动画速度的公式,但是通过一些时间和实践,您应该能够构建符合应用程序主题和目的的适时动画。
结论
既然您已经了解了Material Motion的主要概念以及一些动画的基本原理,那么您就可以开始使用各种可用的工具来为您的应用制作动画,并添加一些额外的流行元素来使用户满意。
翻译自: https://code.tutsplus.com/articles/introduction-to-material-motion-in-android--cms-27375