我试图将两个动画“链接”在一起,这样当一个动画完成后,另一个动画就会开始。这个方法是有效的,但出现了一个问题。第一个动画完成后,它会移回原来的位置。我已将 fillAfter 设置为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建议的各种值,但总会出现某种“跳跃”效果,其中值会在采取新值之前恢复为其原始值。