【问题标题】:ObjectAnimator vs TranslateAnimationObjectAnimator 与 TranslateAnimation
【发布时间】:2015-03-20 20:37:43
【问题描述】:

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

例子:

            @Override
            public void onAnimationEnd(Animation animation) {
                retractableLayout.setVisibility(View.GONE);
            }

当我在 stackoverflow 上搜索时,我发现还有另一种方法。使用 ObjectAnimator。使用后,我的动画没有View.GONE

TranslateAnimation 和 ObjectAnimator 有什么区别?是否其中一个已被弃用并且他们做同样的事情,或者有一段时间,其中一个或另一个更好。

这是一个包含 2 个版本的 github 存储库 (https://github.com/charlesvigneault/AAA_Test1)

谢谢

【问题讨论】:

    标签: java android android-animation


    【解决方案1】:

    不同之处主要在于,如果您使用 TranslateAnimation,您正在制作动画的视图并不会真正离开其在屏幕上的原始位置,它只是让它看起来像是在移动。所以视图基本上不会改变它的坐标。

    查看有关查看动画的视频: https://www.youtube.com/watch?v=_UWXqFBF86U

    如果你使用 ObjectAnimator,视图会真正改变它的实际位置。

    TranslateAnimation 没有被弃用,你仍然可以在 Lollipop 上找到它,但对于大多数情况我可以推荐一个名为 ViewPropertyAnimator 的类,很多人似乎还不知道,这可能是最简单和最直接的方法为视图设置动画,还可以为您节省大量代码。这是一个例子:

    retractableLayout.animate()
                    .translationX(toX)
                    .translationY(toY)
                    .setDuration(duration)
                    .setInterpolator(interpolator)
                    .setStartDelay(startDelay);
    

    你也可以设置监听器等,一定要检查可用的方法。

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

    https://www.youtube.com/watch?v=3UbJhmkeSig

    【讨论】:

    • ViewPropertyAnimator 太棒了!从来不知道它在那里,干杯
    【解决方案2】:

    TranslateAnimation 已被弃用,因为 android 3.0 和 ObjectAnimator 是要走的路。 Object animator 更加灵活,因为它允许您“动画”任何具有适当 setter 和 getter 实现的对象属性。查看官方 android 开发指南 http://developer.android.com/guide/topics/graphics/overview.html

    【讨论】:

    • 我们在 OnePlus One (5.0.1) 上遇到了 ObjectAnimator 的一个小故障:TRANSLATION_X 动画将视图从右侧滑入屏幕 ObectAnimator.ofFloat(view, View.TRANSLATION_X, view.getRootView().getWidth(), 0) 似乎错过了 view 布局,但<translate android:fromXDelta="100%" android:toXDelta="0%"/> 的作用就像魅力。
    猜你喜欢
    • 2016-11-07
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2012-01-17
    相关资源
    最近更新 更多