El método de animación applyTransformation no se activa hasta que haga clic en cualquier diseño

Esto es tan raro, tengo este código de animación:

public class ExpandAnimation extends Animation { private View mAnimatedView; private MarginLayoutParams mViewLayoutParams; private int mMarginStart, mMarginEnd; private boolean mWasEndedAlready = false; /** * Initialize the animation * @param view The layout we want to animate * @param duration The duration of the animation, in ms */ public ExpandAnimation(View view, int duration) { setDuration(duration); mAnimatedView = view; mViewLayoutParams = (MarginLayoutParams) view.getLayoutParams(); mMarginStart = mViewLayoutParams.rightMargin; mMarginEnd = (mMarginStart == 0 ? (0- view.getWidth()) : 0); view.setVisibility(View.VISIBLE); mAnimatedView.requestLayout(); } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { super.applyTransformation(interpolatedTime, t); if (interpolatedTime < 1.0f) { // Calculating the new bottom margin, and setting it mViewLayoutParams.rightMargin = mMarginStart + (int) ((mMarginEnd - mMarginStart) * interpolatedTime); // Invalidating the layout, making us seeing the changes we made mAnimatedView.requestLayout(); // Making sure we didn't run the ending before (it happens!) } else if (!mWasEndedAlready) { mViewLayoutParams.rightMargin = mMarginEnd; mAnimatedView.requestLayout(); mWasEndedAlready = true; } } } 

Y yo uso esta animación:

 View parent = (View) v.getParent(); View containerMenu = parent.findViewById(R.id.containerMenu); ExpandAnimation anim=new ExpandAnimation(containerMenu, 1000); containerMenu.startAnimation(anim); 

Esta animación alterna una presentación que muestra / hidding.

Por defecto, está oculto. Cuando hago clic, la animación funciona y se muestra. Cuando vuelvo a hacer clic, se encoge correctamente. Pero la tercera vez, no hace nada. He depurado y descubrí que el constructor se llama pero no applyTransformation . De alguna manera, si hago clic en cualquier diseño alrededor de la pantalla, la animación se inicia repentinamente.

¿Alguna idea?

Editar ¿Alguien sabe CUÁNDO se aplica applicationTransformation?

No puedo entender por qué, pero cuando hago clic o hago cualquier acción a cualquier diseño, la animación finalmente empieza. Así que programatically agregó una solución. Tengo un scrollview en mi disposición, así que muevo la posición de la voluta:

 hscv.scrollTo(hscv.getScrollX()+1, hscv.getScrollY()+1); 

Esto justo después de containerMenu.startAnimation(anim);

Esto sólo funciona, no puedo entender por qué.

Además, descubrí que algunas animaciones funcionaron impecablemente en android> 4, pero en 2.3 por ejemplo, tenía el mismo problema, trabajaba para expandir, y encogerse, pero no para expandirse por segunda vez.

 parent.invalidate(); 

Hicimos el truco.

  • Crear sombra para el diálogo
  • TabMode = "desplazable" no funciona
  • Fragmento getView () siempre devuelve null para Fragments creado por un FragmentStatePagerAdapter
  • Android CalendarView desaceleración de diseño
  • Lamentablemente appName ha detenido el error
  • DialogFragment pantalla completa muestra relleno en los lados
  • Derecho Drawable en Android. No funciona
  • Problemas con EditText y teclado suave en un fragmento
  • Android galería problema configuración de tamaño de imagen a través de xml
  • TextView como una barra de progresión con minipulación textcolor?
  • "No se encontró ningún identificador de recurso para el atributo 'showAsAction' en el paquete 'android'"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.