Estoy intentando "encadenar" dos animaciones juntas, de modo que cuando una completa, la otra comienza. Esto funciona, excepto por un problema. Después de que se completa la primera animación, vuelve a su posición original. Estoy estableciendo llenar después de verdad. ¿Qué más me estoy perdiendo?Android Chain Animations
Aquí está el código que estoy usando. Tenga en cuenta que esto se encuentra en una clase que extiende 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);
Solución:
La única manera de que pudiera conseguir que esto funcione para mi satisfacción fue utilizar un AnimationSet
, pero establece el desplazamiento inicial de la segunda animación de desplazamiento inicial + duración de la primera animación, más un pequeño relleno. No tenían que ser completamente exactos en mi caso.
Intenté jugar con varios valores, como CommonsWare sugirió, pero siempre obtendría algún tipo de efecto de "ajuste" donde los valores volverían a su valor original antes de tomar el nuevo.
consecutivos El AnimationSet.Builder terminó siendo lo que necesitaba: http://developer.android.com/reference/android/animation/AnimatorSet.Builder.html. – Steve