看起来 动画片和 动画师都允许我对对象的属性(位置、不透明度、比例、旋转等)进行动画处理,我很难区分两者的用例。我应该什么时候使用动画师与动画,反之亦然?
Animations是 Animators的旧版本。动画师在3.0中引入,以帮助克服动画的一些缺点。
Animations
Animators
Animations仅更改对象的可视化表示形式。如果你只是改变不透明度,这是可以的,但是当你翻译、旋转或缩放对象时,它会导致问题。在 Animators之前的旧时代,如果翻译对象,就必须使用新坐标执行重新布局。取决于物体移动的位置,这可能相当困难。
另一方面,动画师改变对象的物理属性。这意味着,如果您将一个视图移动到一个新的位置,触摸坐标将被映射到新的位置,而不需要任何其他干预。
就我个人而言,我不再经常使用动画,除非我开发的 API 是2.3或更低。谢天谢地,这已经不是问题了。还有一些旧的类仍然使用 Animations API,特别是在使用 xml 资源时,比如 android.support.v4.app.FragmentTransaction类(通常的 FragmentTransaction支持 Animators)。
android.support.v4.app.FragmentTransaction
FragmentTransaction
作为一个附带说明,该项目 九代机器人是开发模拟动画师的功能,但使用动画,以便您可以使应用程序的工作方式一直到1.6。
Animation对象使视图的图像具有动画效果。如果你使用这个例子,移动一个按钮在屏幕周围,你 不会能够点击它在新的可见位置,因为它没有真正移动,但只有他的位图表示被翻译。您也不能改变它的比例,因为您正在对位图进行修改。如果使用 xml 文件,请将它们放在 anim文件夹中。
Animation
anim
Animator对象动画视图的属性(如边距或宽度)。如果你用这个在屏幕上移动一个按钮,你的 威尔就可以在新的可见位置捕捉到它上面的点击。如果使用 xml 文件,请将它们放在 animator文件夹中。
Animator
animator
如果您只需要美观效果,如淡入或小外观翻译,使用 Animation将更有效,因为它不调用 layout()或 measure()方法。如果确实需要捕获诸如单击事件之类的操作,请使用 Animator。
layout()
measure()