看起来Animations和Animators允许我在对象上设置属性(位置,不透明度,缩放,旋转等)的动画,我很难区分用例对彼此而言。我什么时候应该使用动画师而不是动画,反之亦然?
答案 0 :(得分:84)
Animations
是Animators
的旧版本。动画师在3.0中引入,以帮助克服动画所带来的一些短缺。
Animations
仅更改对象的可视化表示。如果您只是更改不透明度,这很好,但在翻译,旋转或缩放对象时会导致问题。在Animators
之前的过去,如果您翻译了对象,则必须使用新坐标执行重新布局。根据物体移动的位置,这可能相当困难。
动画师会改变对象的物理属性。这意味着如果您将视图移动到新位置,触摸坐标将映射到新位置,而无需任何其他干预。
就个人而言,我不再使用Animations了,除非我在API 2.3或更低版本上开发。值得庆幸的是,这已成为一个问题。还有一些旧类仍然使用Animations API,特别是在使用xml资源时,例如android.support.v4.app.FragmentTransaction
类(普通FragmentTransaction
支持Animators)。
作为旁注,项目NineOldAndroids的开发是为了模仿动画师的功能,但使用动画,这样你就可以制作一直有效的应用程序1.6。
答案 1 :(得分:1)
一个Animation
对象为视图的图像设置动画。例如,如果使用此按钮,则要在屏幕上移动按钮,您将无法在新的可见位置单击该按钮,因为该按钮并未真正移动,只能翻译其位图表示形式。由于要对位图进行修改,因此您也将无法更改其比例。如果您使用xml文件,请将它们放在anim
文件夹中。
一个Animator
对象为视图的属性(如边距或宽度)设置动画。如果您使用此按钮在屏幕上移动按钮,您将 能够在新的可见位置捕获对其的点击。如果您使用xml文件,请将它们放在animator
文件夹中。
如果您仅需要诸如淡入淡出或小外观转换之类的修饰效果,则使用Animation
会更有效,因为它不会调用layout()
或measure()
方法。如果您确实需要捕获点击事件等操作,请使用Animator
。