背景
我已经用了很长时间了。
最常见的用例是从加载阶段切换到内容阶段,或者在向导的各个阶段之间切换,有时甚至出现错误阶段。
问题
当我建议在“android ktx”存储库(ViewAnimator)中添加一个不错的扩展功能时,我被告知:
ViewAnimator不是一个我们积极建议用来设置视图动画的API。
它是基于旧的动画系统,我们不想推广
它在这个图书馆里的用途。
我试过的
我看过ViewAnimator和ViewSwitcher的文章,包括ViewSwitcher。它并没有说它已经被替换/弃用,也没有说建议使用其他的东西来代替它。
问题
什么已经取代了ViewAnimator?他说的是转变吗?
与ViewAnimator相比有哪些优点和缺点?
给定一个有一些视图的viewanimator,如何将其转换为新的解决方案,包括在状态之间切换?

最佳答案

我假设Romain Guy means使用的是ViewAnimatorapi,而较新的api被认为是Animation。请参阅“属性动画与视图动画有何不同”Animator,其中介绍了每个api的优缺点以及使用场景:
视图动画系统提供了仅对视图对象设置动画的功能,因此如果要对非视图对象设置动画,则必须实现自己的代码。视图动画系统也受到限制,因为它只显示要设置动画的视图对象的几个方面,例如视图的缩放和旋转,而不显示背景色。
视图动画系统的另一个缺点是,它只修改了绘制视图的位置,而没有修改实际视图本身。例如,如果设置按钮的动画以在屏幕上移动,则该按钮会正确绘制,但单击按钮的实际位置不会更改,因此必须实现自己的逻辑来处理此问题。
使用属性动画系统,这些约束将被完全删除,您可以设置任何对象(视图和非视图)的任何属性的动画,并且对象本身实际上已被修改。属性动画系统在执行动画的方式上也更加健壮。在较高级别上,可以将动画师指定给要设置动画的属性,例如颜色、位置或大小,还可以定义动画的各个方面,例如多个动画师的插值和同步。
然而,视图动画系统的设置时间更短,并且需要编写的代码更少。如果视图动画完成了您需要做的所有事情,或者如果您的现有代码已经按照您想要的方式工作,则无需使用属性动画系统。如果用例出现,在不同的情况下同时使用这两个动画系统也是有意义的。
不过,没有直接的方法“将ViewAnimator转换为使用新方法”,因为它在内部使用Animationapi。如文档中所述:“如果view animation完成了您需要做的所有事情,或者如果您的现有代码已经按照您想要的方式工作,则不需要使用属性animation system”,这就是为什么ViewAnimator不被弃用的原因。

07-26 09:30