Animator和动画有什么区别?

问题描述 投票:58回答:2

看起来AnimationsAnimators都允许我对对象的属性(位置,不透明度,比例,旋转等)进行动画处理,而且我很难区分两者的用例。我什么时候应该使用动画师而不是动画,反之亦然?

android android-animation
2个回答
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
投票

Animation对象为视图的图像设置动画。例如,如果您使用此按钮,要在屏幕上移动按钮,您将无法在新的可见位置单击它,因为它没有真正移动,但只翻译了他的位图表示。由于您正在修改位图,因此您也无法更改它的比例。如果您使用xml文件,请将它们放在anim文件夹中。

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

如果您只需要美化效果,如淡入或小外观翻译,使用Animation将更有效,因为它不会调用layout()measure()方法。如果您确实需要捕获单击事件等操作,请使用Animator

© www.soinside.com 2019 - 2024. All rights reserved.