首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectAnimator对TranslateAnimation

ObjectAnimator对TranslateAnimation
EN

Stack Overflow用户
提问于 2015-03-20 20:37:43
回答 2查看 6.3K关注 0票数 6

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

示例:

代码语言:javascript
复制
            @Override
            public void onAnimationEnd(Animation animation) {
                retractableLayout.setVisibility(View.GONE);
            }

当我搜索堆栈溢出时,我发现了另一种方法。用ObjectAnimator。使用它之后,没有View.GONE,我的动画就没问题了。

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

这里有一个带有两个版本的github回购(Test1)

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-21 19:49:26

区别主要在于,如果您使用TranslateAnimation,您正在动画的视图并没有真正保留它在屏幕上的原始位置,它只是使它看起来像是在移动。所以视图基本上不会改变它的坐标。

查看这段关于观看动画的视频:UWXqFBF86U

如果使用ObjectAnimator,视图实际上会更改其实际位置。

TranslateAnimation并不是不推荐的,您仍然可以在Lollipop上找到它,但在大多数情况下,我可以推荐一个名为ViewPropertyAnimator的类,许多人似乎还不知道这个类,它可能是最简单和最直接的方式来动画一个视图,也可以为您节省大量代码。以下是一个例子:

代码语言:javascript
复制
retractableLayout.animate()
                .translationX(toX)
                .translationY(toY)
                .setDuration(duration)
                .setInterpolator(interpolator)
                .setStartDelay(startDelay);

您还可以设置监听器等,确保检查可用的方法。

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

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

票数 15
EN

Stack Overflow用户

发布于 2015-03-20 20:41:31

从Android3.0开始,TranslateAnimation就被取消了,而ObjectAnimator就是其中的一条路。对象动画更加灵活,因为它允许您“动画”任何有适当设置器和getter实现的对象属性。查看官方android开发指南http://developer.android.com/guide/topics/graphics/overview.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29175429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档