Animator和动画有什么区别?

ada*_*ort 63 android android-animation

看起来动画动画师都允许我在对象上设置属性(位置,不透明度,缩放,旋转等)的动画,而我很难区分两者的用例.我什么时候应该使用动画师而不是动画,反之亦然?

Dee*_*eeV 89

Animations是旧版本的Animators.动画师在3.0中引入,以帮助克服动画所带来的一些短缺.

Animations只更改对象的可视化表示.如果您只是更改不透明度,这很好,但在翻译,旋转或缩放对象时会导致问题.在过去Animators,如果您翻译了对象,则必须使用新坐标执行重新布局.取决于物体移动的位置可能相当困难.

另一方面,动画制作者会改变对象的物理属性.这意味着如果将视图移动到新位置,触摸坐标将映射到新位置,而无需任何其他干预.

就个人而言,我不再使用Animations了,除非我在API 2.3或更低版本上开发.值得庆幸的是,这已成为一个问题.还有一些旧的类仍然使用Animations API,特别是在使用xml资源时,例如android.support.v4.app.FragmentTransaction类(普通FragmentTransaction支持Animators).

作为旁注,NineOldAndroids项目的开发是为了模仿动画师的功能,但使用动画,这样你就可以制作一直到1.6的应用程序.

  • 好答案.此外,如果您希望使用动画更改布局,则可能但在性能方面可能无法正常工作,具体取决于您使用的布局.我在这里做了一个示例:http://stackoverflow.com/a/19616416/878126 (2认同)

All*_*oso 5

一个Animation对象为视图的图像设置动画。例如,如果使用此按钮,则要在屏幕上移动按钮,将无法在新的可见位置单击该按钮,因为该按钮并未真正移动,只能翻译其位图表示形式。由于要对位图进行修改,因此您也将无法更改其比例。如果您使用xml文件,请将它们放在anim文件夹中。

一个Animator对象使视图的属性(例如边距或宽度)动起来。如果使用此按钮在屏幕上移动按钮,可以在新的可见位置捕获对其的点击。如果您使用xml文件,请将它们放在animator文件夹中。

如果只需要修饰效果,例如淡入或小的外观转换,则使用a Animation会更有效,因为它不会调用layout()measure()方法。如果确实需要捕获诸如单击事件之类的操作,请使用Animator