ObjectAnimator 与 TranslateAnimation
ObjectAnimator vs TranslateAnimation
我只是做了一个简单的项目,我尝试 show/hide 使用 TranslateAnimation 在 LinearLayout 的顶部布局。有一个闪烁,因为当我调用 onAnimationEnd() 时,动画没有完成 0.1 秒。
示例:
@Override
public void onAnimationEnd(Animation animation) {
retractableLayout.setVisibility(View.GONE);
}
当我在 Whosebug 上搜索时,我发现还有另一种方法可以做到这一点。使用 ObjectAnimator。使用它后,我的动画没有 View.GONE
就很好了
TranslateAnimation 和 ObjectAnimator 有什么区别?是否其中之一已被弃用并且他们做同样的事情,或者有时一个或另一个更好。
这是一个包含 2 个版本的 github 存储库 (https://github.com/charlesvigneault/AAA_Test1)
谢谢
TranslateAnimation
自 android 3.0 以来已被弃用,ObjectAnimator
是必经之路。对象动画器更加灵活,因为它允许您 "animate" 任何对象 属性 具有适当的 setter 和 getter 实施。查看官方 android 开发指南
http://developer.android.com/guide/topics/graphics/overview.html
不同之处主要在于,如果您使用 TranslateAnimation,您正在设置动画的视图并不会真正离开其在屏幕上的原始位置,它只是让它看起来像是在移动。所以视图基本上不会改变它的坐标。
查看有关观看动画的视频:
https://www.youtube.com/watch?v=_UWXqFBF86U
如果您使用 ObjectAnimator,视图会真正改变其实际位置。
TranslateAnimation 没有被弃用,你仍然可以在 Lollipop 上找到它,但在大多数情况下我可以推荐一个叫做 ViewPropertyAnimator 的 class ,很多人似乎仍然不知道它,它是可能是为视图设置动画的最简单和最直接的方法,并且还可以为您节省大量代码。这是一个例子:
retractableLayout.animate()
.translationX(toX)
.translationY(toY)
.setDuration(duration)
.setInterpolator(interpolator)
.setStartDelay(startDelay);
您还可以设置监听器等,一定要检查可用的方法。
并观看这个非常有用的视频:
我只是做了一个简单的项目,我尝试 show/hide 使用 TranslateAnimation 在 LinearLayout 的顶部布局。有一个闪烁,因为当我调用 onAnimationEnd() 时,动画没有完成 0.1 秒。
示例:
@Override
public void onAnimationEnd(Animation animation) {
retractableLayout.setVisibility(View.GONE);
}
当我在 Whosebug 上搜索时,我发现还有另一种方法可以做到这一点。使用 ObjectAnimator。使用它后,我的动画没有 View.GONE
TranslateAnimation 和 ObjectAnimator 有什么区别?是否其中之一已被弃用并且他们做同样的事情,或者有时一个或另一个更好。
这是一个包含 2 个版本的 github 存储库 (https://github.com/charlesvigneault/AAA_Test1)
谢谢
TranslateAnimation
自 android 3.0 以来已被弃用,ObjectAnimator
是必经之路。对象动画器更加灵活,因为它允许您 "animate" 任何对象 属性 具有适当的 setter 和 getter 实施。查看官方 android 开发指南
http://developer.android.com/guide/topics/graphics/overview.html
不同之处主要在于,如果您使用 TranslateAnimation,您正在设置动画的视图并不会真正离开其在屏幕上的原始位置,它只是让它看起来像是在移动。所以视图基本上不会改变它的坐标。
查看有关观看动画的视频: https://www.youtube.com/watch?v=_UWXqFBF86U
如果您使用 ObjectAnimator,视图会真正改变其实际位置。
TranslateAnimation 没有被弃用,你仍然可以在 Lollipop 上找到它,但在大多数情况下我可以推荐一个叫做 ViewPropertyAnimator 的 class ,很多人似乎仍然不知道它,它是可能是为视图设置动画的最简单和最直接的方法,并且还可以为您节省大量代码。这是一个例子:
retractableLayout.animate()
.translationX(toX)
.translationY(toY)
.setDuration(duration)
.setInterpolator(interpolator)
.setStartDelay(startDelay);
您还可以设置监听器等,一定要检查可用的方法。
并观看这个非常有用的视频: