动画师和动画有什么区别?
What is the difference between an Animator and an Animation?
看起来 Animations and Animators 都允许我对对象的属性(位置、不透明度、比例、旋转等)进行动画处理,但我很难区分两者的用例。我什么时候应该使用动画师而不是动画,反之亦然?
Animations
是 Animators
的旧版本。 Animators 在 3.0 中引入,以帮助克服 Animations 的一些缺点。
Animations
仅更改对象的视觉表示。如果您只是更改不透明度,这很好,但是当您平移、旋转或缩放对象时,它会导致问题。在 Animators
之前的过去,如果您平移对象,则必须使用新坐标重新布局。根据对象移动的位置,这可能相当困难。
另一方面,动画师会改变对象的物理属性。这意味着如果将视图移动到新位置,触摸坐标将映射到新位置,无需任何其他干预。
就个人而言,除非我在 API 的 2.3 或更低版本上开发,否则我不再使用动画了。值得庆幸的是,这已不再是一个问题。还有一些旧的 classes 仍然使用动画 API,尤其是在使用 xml 资源时,例如 android.support.v4.app.FragmentTransaction
class(正常的 FragmentTransaction
改为支持 Animators)。
附带说明一下,项目 NineOldAndroids 是为了模仿 Animators 的功能而开发的,但使用动画,因此您可以制作一直运行到 1.6 的应用程序。
一个 Animation
对象为视图的图像设置动画。例如,如果您使用它,要在屏幕上移动一个按钮,您将不会能够在新的可见位置点击它,因为它并没有真正移动,而只是他的位图表示被翻译。您也无法更改它的比例,因为您正在修改位图。如果您使用 xml 个文件,请将它们放在 anim
文件夹中。
一个 Animator
对象动画视图的 属性(如边距或宽度)。如果您使用它在屏幕上移动按钮,您 将 能够在新的可见位置捕获对其的点击。如果您使用 xml 个文件,请将它们放在 animator
个文件夹中。
如果您只需要淡入淡出或外观平移等修饰效果,使用 Animation
会更高效,因为它不会调用 layout()
或 measure()
方法。如果您确实需要捕获点击事件等操作,请使用 Animator
.
看起来 Animations and Animators 都允许我对对象的属性(位置、不透明度、比例、旋转等)进行动画处理,但我很难区分两者的用例。我什么时候应该使用动画师而不是动画,反之亦然?
Animations
是 Animators
的旧版本。 Animators 在 3.0 中引入,以帮助克服 Animations 的一些缺点。
Animations
仅更改对象的视觉表示。如果您只是更改不透明度,这很好,但是当您平移、旋转或缩放对象时,它会导致问题。在 Animators
之前的过去,如果您平移对象,则必须使用新坐标重新布局。根据对象移动的位置,这可能相当困难。
另一方面,动画师会改变对象的物理属性。这意味着如果将视图移动到新位置,触摸坐标将映射到新位置,无需任何其他干预。
就个人而言,除非我在 API 的 2.3 或更低版本上开发,否则我不再使用动画了。值得庆幸的是,这已不再是一个问题。还有一些旧的 classes 仍然使用动画 API,尤其是在使用 xml 资源时,例如 android.support.v4.app.FragmentTransaction
class(正常的 FragmentTransaction
改为支持 Animators)。
附带说明一下,项目 NineOldAndroids 是为了模仿 Animators 的功能而开发的,但使用动画,因此您可以制作一直运行到 1.6 的应用程序。
一个 Animation
对象为视图的图像设置动画。例如,如果您使用它,要在屏幕上移动一个按钮,您将不会能够在新的可见位置点击它,因为它并没有真正移动,而只是他的位图表示被翻译。您也无法更改它的比例,因为您正在修改位图。如果您使用 xml 个文件,请将它们放在 anim
文件夹中。
一个 Animator
对象动画视图的 属性(如边距或宽度)。如果您使用它在屏幕上移动按钮,您 将 能够在新的可见位置捕获对其的点击。如果您使用 xml 个文件,请将它们放在 animator
个文件夹中。
如果您只需要淡入淡出或外观平移等修饰效果,使用 Animation
会更高效,因为它不会调用 layout()
或 measure()
方法。如果您确实需要捕获点击事件等操作,请使用 Animator
.