【Animations】动画概述(1)

原文

概要


动画可以添加视觉提示,通知用户您的应用中发生了什么。当用户界面改变状态时,如加载新内容或新操作可用时,它们特别有用。动画还为您的应用增加了精美的外观,使其具有更高质量的外观和感觉。

Android包含不同的动画API,具体取决于您想要的动画类型,因此本页提供了可以将动画添加到UI的不同方式的概述。

为了更好地理解何时应使用动画,请参阅运动的 材料设计指南

动画位图


【Animations】动画概述(1)
图1.一个动画绘制

当您想要动画位图图形(如图标或插图)时,应该使用可绘制的动画API。通常,这些动画是使用可绘制资源静态定义的,但您也可以在运行时定义动画行为。

例如,将播放按钮设置为在点击时转换为暂停按钮是一种很好的方式,可以向用户传达两个操作是相关的,并且按下一个可以让其他人看到。

有关更多信息,请阅读Animate Drawable Graphics。

动画用户界面的可见性和动作


【Animations】动画概述(1)
图2.对话框出现并消失时的微妙动画使得UI更改不那么震撼

当您需要在布局中更改视图的可见性或位置时,应该包含细微的动画以帮助用户了解UI如何变化。

要在当前布局中移动,显示或隐藏视图,可以使用该android.animation包提供的属性动画系统 ,可在Android 3.0(API级别11)及更高版本中使用。这些API会View 在一段时间内更新对象的属性,并在属性更改时不断重绘视图。例如,当您更改位置属性时,视图会在屏幕上移动,或者当您更改alpha属性时,视图会淡入或淡出。

要以最少的努力创建这些动画,您可以在布局上启用动画,以便在您更改视图的可见性时自动应用动画。有关更多信息,请参阅自动动画布局更新。

要了解如何使用属性动画系统构建动画,请阅读 属性动画概述。或者查看以下页面来创建常用动画:

基于物理的运动

【Animations】动画概述(1)
图3.使用ObjectAnimator构建的动画

【Animations】动画概述(1)
图4.使用基于物理的API构建的动画

只要有可能,你的动画应该应用真实世界的物理,因此它们看起来很自然。例如,他们应该在目标发生变化时保持动力,并在变化期间平稳过渡。

为了提供这些行为,Android支持库包括基于物理规律的动画API,以控制动画的发生。

两种常见的基于物理学的动画如下:

  • Spring Animation
  • Fling Animation

不基于物理学的动画(如使用ObjectAnimatorAPI 构建的动画)相当静态,并且具有固定的持续时间。如果目标值发生变化,则需要在目标值更改时取消动画,使用新值重新配置动画作为新的起始值,并添加新的目标值。从视觉上看,这个过程会在动画中产生一个突然的停顿,然后会产生一个脱节的动作,如图3所示。

而基于物理的动画API构建的动画DynamicAnimation则是强制驱动的。目标值的变化会导致力量的变化。新的力量适用于现有速度,从而不断向新目标转变。这个过程产生了一个更自然的动画,如图4所示。

动画布局更改


【Animations】动画概述(1)
图5.通过更改布局或开始新活动可以实现显示更多细节的动画

在Android 4.4(API级别19)及更高版本上,您可以使用转换框架在当前活动或片段内交换布局时创建动画。您只需指定开始和结束布局,以及要使用的动画类型。然后系统计算出两个布局之间的动画。你可以用它来换出整个用户界面或移动/替换一些视图。

例如,当用户点击一个项目以查看更多信息时,可以用项目详细信息替换布局,应用如图5所示的转换。

起始和结束布局都存储在a中Scene,但起始场景通常是从当前布局自动确定的。然后创建一个Transition告诉系统需要什么类型的动画,然后调用TransitionManager.go()并且系统运行动画来交换布局。

有关更多信息,请阅读使用转换布局之间的动画。对于示例代码,请查看 BasicTransition

活动之间动画


在Android 5.0(API级别21)及更高版本上,您还可以创建在您的活动之间转换的动画。这是基于上述相同的转换框架来动画布局更改,但它允许您在单独的活动中的布局之间创建动画。

您可以应用简单的动画,例如从侧面滑动新的活动或将其淡入,但您也可以创建在每个活动中的共享视图之间转换的动画。例如,当用户点击某个项目以查看更多信息时,可以使用动画无缝地增加该项目以填充屏幕,从而转换为新的活动,如图5所示的动画。

像往常一样,你打电话startActivity()给它,但将它提供的一系列选项传给它ActivityOptions.makeSceneTransitionAnimation()。这个选项包可能包含哪些视图在活动之间共享,以便转换框架可以在动画过程中连接它们。

有关所有细节,请参阅使用动画开始活动。对于示例代码,请查看ActivitySceneTransitionBasic

Lastest Update:2018.04.25

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Animations】动画概述(1)

转载于:https://blog.51cto.com/4789781/2120968

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值