看起来Animations和Animators都允许我对对象的属性(位置、不透明度、缩放、旋转等)进行动画处理,我很难区分两者的用例。什么时候应该使用animator还是animation,反之亦然?
bqf10yzr1#
Animations是Animators的旧版本。Animators在3.0中引入,以帮助克服Animations的一些缺点。Animations只改变对象的视觉表示。如果你只是改变不透明度,这是可以的,但是当你平移,旋转或缩放对象时,它会导致问题。在Animators之前的旧时代,如果你平移对象,你必须用新的坐标重新布局。这可能相当困难,具体取决于对象移动的位置。另一方面,动画师改变对象的物理属性。这意味着,如果您将View移动到新位置,触摸坐标将Map到新位置,而无需任何其他干预。就我个人而言,我不再使用Animations了,除非我在API的2.3或更低版本上开发。谢天谢地,这已经不是一个问题了。还有一些旧的类仍然使用Animations API,特别是当涉及到使用XML资源时,比如android.support.v4.app.FragmentTransaction类(普通的FragmentTransaction支持Animators)。
Animations
Animators
android.support.v4.app.FragmentTransaction
FragmentTransaction
eqfvzcg82#
一个Animation对象动画视图的图像。例如,如果你使用这个,在屏幕上移动一个按钮,你将不能在新的可见位置点击它,因为它没有真正移动,而只是他的位图表示被转换。你也不能改变它的比例,因为你正在修改位图。如果你使用xml文件,把它们放在anim文件夹中。一个Animator对象动画化视图的属性(如边距或宽度)。如果你用它在屏幕上移动一个按钮,你将能够在新的可见位置捕获点击。如果你使用xml文件,将它们放在animator文件夹中。如果你只需要修饰效果,比如淡入或小的外观转换,使用Animation会更有效,因为它不会调用layout()或measure()方法。如果你确实需要捕获像点击事件这样的动作,使用Animator。
Animation
anim
Animator
animator
layout()
measure()
2条答案
按热度按时间bqf10yzr1#
Animations
是Animators
的旧版本。Animators在3.0中引入,以帮助克服Animations的一些缺点。Animations
只改变对象的视觉表示。如果你只是改变不透明度,这是可以的,但是当你平移,旋转或缩放对象时,它会导致问题。在Animators
之前的旧时代,如果你平移对象,你必须用新的坐标重新布局。这可能相当困难,具体取决于对象移动的位置。另一方面,动画师改变对象的物理属性。这意味着,如果您将View移动到新位置,触摸坐标将Map到新位置,而无需任何其他干预。
就我个人而言,我不再使用Animations了,除非我在API的2.3或更低版本上开发。谢天谢地,这已经不是一个问题了。还有一些旧的类仍然使用Animations API,特别是当涉及到使用XML资源时,比如
android.support.v4.app.FragmentTransaction
类(普通的FragmentTransaction
支持Animators)。eqfvzcg82#
一个
Animation
对象动画视图的图像。例如,如果你使用这个,在屏幕上移动一个按钮,你将不能在新的可见位置点击它,因为它没有真正移动,而只是他的位图表示被转换。你也不能改变它的比例,因为你正在修改位图。如果你使用xml文件,把它们放在anim
文件夹中。一个
Animator
对象动画化视图的属性(如边距或宽度)。如果你用它在屏幕上移动一个按钮,你将能够在新的可见位置捕获点击。如果你使用xml文件,将它们放在animator
文件夹中。如果你只需要修饰效果,比如淡入或小的外观转换,使用
Animation
会更有效,因为它不会调用layout()
或measure()
方法。如果你确实需要捕获像点击事件这样的动作,使用Animator
。