Java ObjectAnimator vs TranslateAnimation

Java ObjectAnimator vs TranslateAnimation,java,android,android-animation,Java,Android,Android Animation,我只是做了一个简单的项目,我尝试用TranslateAnimation在线性布局的顶部显示/隐藏布局。有一个闪烁,因为当我调用onAnimationEnd()时,动画在0.1秒内没有完成 例如: @Override public void onAnimationEnd(Animation animation) { retractableLayout.setVisibility(View.GONE);

我只是做了一个简单的项目,我尝试用TranslateAnimation在线性布局的顶部显示/隐藏布局。有一个闪烁,因为当我调用onAnimationEnd()时,动画在0.1秒内没有完成

例如:

            @Override
            public void onAnimationEnd(Animation animation) {
                retractableLayout.setVisibility(View.GONE);
            }
当我在stackoverflow上搜索时,我发现还有另一种方法。和ObjectAnimator一起。使用它之后,我的动画在没有
视图的情况下很好。消失了

TranslateAnimation和ObjectAnimator之间有什么区别?他们中的一个被弃用了,他们做同样的事情,或者有一段时间其中一个更好

这是一个github回购协议,有两个版本()


谢谢

TranslateAnimation
自android 3.0以来已不再受欢迎,
ObjectAnimator
是一条发展之路。Object animator更灵活,因为它允许您“动画化”任何实现了适当setter和getter的对象属性。查看官方android开发指南

主要区别在于,如果使用TranslateAnimation,则正在设置动画的视图不会真正离开其在屏幕上的原始位置,它只是使其看起来像在移动。因此,视图基本上不会改变其坐标

查看有关查看动画的此视频:

如果使用ObjectAnimator,视图将真正更改其实际位置

TranslateAnimation并没有遭到反对,你仍然可以在棒棒糖上找到它,但对于大多数情况,我可以推荐一个名为的类,很多人似乎还不知道,它可能是最简单、最直接的视图动画制作方法,也可以为你节省大量代码。举个例子:

retractableLayout.animate()
                .translationX(toX)
                .translationY(toY)
                .setDuration(duration)
                .setInterpolator(interpolator)
                .setStartDelay(startDelay);
您还可以设置一个侦听器等,确保检查可用的方法

看看这段非常有用的视频:


ViewPropertyAnimator太棒了!Cheers从来不知道它在那里,但在OnePlus One(5.0.1)上,我们遇到了一个问题:
TRANSLATION\u X
animation将视图从右侧滑入屏幕
ObectAnimator.offload(view,view.TRANSLATION\u X,view.getRootView().getWidth(),0)
似乎错过了视图布局的阶段,但是
很有魅力。