加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – ObjectAnimator vs TranslateAnimation

发布时间:2020-12-15 02:49:59 所属栏目:Java 来源:网络整理
导读:我只是做一个简单的项目,我尝试使用TranslateAnimation显示/隐藏LinearLayout顶部的布局.有一个闪烁,因为当我调用onAnimationEnd()时,动画没有完成0.1秒. 例: @Override public void onAnimationEnd(Animation animation) { retractableLayout.setVisibilit
我只是做一个简单的项目,我尝试使用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,你动画的视图并没有真正保留在屏幕上的原始位置,它只是让它看起来像是在移动.因此视图基本上不会改变其坐标.

观看有关观看动画的视频:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读