我试图将两个动画“链接”在一起,所以当一个完成时,另一个开始。除了一个问题外,这是可行的。第一个动画完成后,它会回到原来的位置。我将fill after设置为true。我还缺少什么?
这是我正在使用的代码。请注意,这是在扩展 LinearLayout 的类中。
// FIRST ANIMATION
mAnimation = new TranslateAnimation(0, PANEL_END_X, 0, 0);
mAnimation.setDuration(PANEL_TRANSITION_TIME);
mAnimation.setFillAfter(true);
mAnimation.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationEnd(Animation animation) {
// FIRST ANIMATION COMPLETE, CALL THE SECOND ANIMATION
startAnimation(mAlphaAnimation);
}
});
// SECOND ANIMATION
mAlphaAnimation = new AlphaAnimation(1.0f, 0.0f);
mAlphaAnimation.setDuration(PANEL_ALPHA_TRANSITION_TIME);
mAlphaAnimation.setFillAfter(true);
解决方案:
让我满意的唯一方法是使用AnimationSet
,但将第二个动画的起始偏移设置为开始偏移 + 第一个动画的持续时间,再加上一点填充。在我的情况下,它们不必完全准确。
我尝试按照 CommonsWare 的建议使用各种值,但我总是会得到某种类型的“捕捉”效果,在采用新值之前,这些值会恢复到其原始值。