我试图将两个动画“链接”在一起,所以当一个完成时,另一个开始。这是有效的,除了一个问题。第一个动画完成后,它会移回原来的位置。我设置填充后为真。我还缺少什么?
这是我正在使用的代码。请注意,这是在扩展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建议的各种值,但我会总是得到某种类型的“捕捉”效果,其中值在恢复之前将恢复到原始值。