Я пытаюсь "объединить" две анимации вместе, поэтому, когда все завершается, начинается другая. Это работает, за исключением одной проблемы. После того как первая анимация будет завершена, она вернется к исходной позиции. Я настраиваю заполнение после истины. Что еще мне не хватает?
Вот код, который я использую. Обратите внимание: это класс, который расширяет 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, но я всегда получал бы какой-то эффект "привязки", когда значения возвращались бы к их первоначальному значению, прежде чем брать новый.