gpt4 book ai didi

java - ObjectAnimator 与 TranslateAnimation

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:54 24 4
gpt4 key购买 nike

我只是做了一个简单的项目,我尝试在带有 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 )

谢谢

最佳答案

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

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

如果您使用 ObjectAnimator, View 会真正改变其实际位置。

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

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

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

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

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

关于java - ObjectAnimator 与 TranslateAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com