Android: 开始新动画时保持旧动画状态

Android: Stay in state of older animation when start a new animation

我想在单个视图上制作两种类型的动画:TranslateAnimation 和片刻之后的 ScaleAnimation。问题是当 ScaleAnimation 开始时视图 return 到它们的初始状态(在 TranslateAnimation 之前)。有没有办法做我想做的事?

您可以向 TranslateAnimation 添加侦听器,完成后,将 View 的位置更改为动画的结束位置。

TranslateAnimation anim = new TranslateAnimation(...);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
    view.setX(NEW_X_POSITION);
    view.setY(NEW_Y_POSITION);
}
});

但我建议实际上从旧的 TranslateAnimation/ScaleAnimation 类型的 类 切换到新的 ViewPropertyAnimator 框架 (http://android-developers.blogspot.co.il/2011/05/introducing-viewpropertyanimator.html) . 在新的框架中你不必像上面的代码那样改变位置,语法也简单得多:

myView.animate().x(500).y(500);

您也可以使用AnimatorSet创建一组动画一起播放或一个接一个播放。

进一步阅读:https://developer.android.com/reference/android/view/ViewPropertyAnimator.html