Cómo hacer continuamente ejecutando TransitionDrawable animación en Android?

Estoy tratando de hacer un logo animado. Se compone de dos imágenes estáticas.

Me gustaría lograr un efecto de desvanecimiento cruzado.

Lo he hecho con el uso de TransitionDrawable, establecer el crossFadeEnabled y todo se ve bien.

La cosa es que necesito correr en círculo. ¿Cómo puede lograrse?

<transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/image_expand"> <item android:drawable="@drawable/image_collapse"> </transition> Resources res = mContext.getResources(); TransitionDrawable transition = (TransitionDrawable) res.getDrawable(R.drawable.expand_collapse); ImageView image = (ImageView) findViewById(R.id.toggle_image); image.setImageDrawable(transition); 

Este es el código de google que funciona perfectamente. Lo más importante es que en las necesidades de trabajar bajo Android 1.6.

Me las arreglé para obtener la transición para poder trabajar a través de un método manejador que invierte la dirección después de la transición de drawable1 a drawable2. En mi XML:

 <?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/background_animation1"/> <item android:drawable="@drawable/background_animation2"/> </transition> 

Realmente no hay una manera incorporada de hacer esto. TransitionDrawable no está diseñado con una función de animación de bucle infinito. La recomendación más fácil sería usar una Animation (alfa, escala, traducir, etc.) en una View contenga solo uno de sus Drawable s si puede.

Un hack bastante fácil sería agregar un Handler y una devolución de llamada a su View personalizada que mantiene su TransitionDrawable . Cuando se crea la View , el Handler se puede establecer en el intervalo de transición. La View también implementaría Handler.Callback y dentro de su handleMessage(Message) , llamaría reverseTransition(int) en su TransitionDrawable .

Un ejemplo aproximado está abajo:

 public class myView extends View implements Handler.Callback { private Handler mHandler = new Handler(this); private int mDelay = 1000; // Delay in milliseconds. private Runnable mEvent = new Runnable() { public void run() { mHandler.removeCallbacks(mEvent); mHandler.postDelayed(mEvent, mDelay); Message message = mHandler.obtainMessage(); mHandler.sendMessage(message); } }; public View(Context context) { super(context); // Set your background TransitionDrawable. setBackgroundDrawable(...); } public handleMessage(Message message) { TransitionDrawable drawable = (TransitionDrawable) getBackgroundDrawable(); drawable.reverseTransition(mDelay); } public void start() { mHandler.post(mEvent); } public void stop() { mHandler.removeCallbacks(mEvent); } } 

start() llamada start() para iniciar su transición continua, stop() para detenerla. Es un poco como crear su propia animación, pero funciona en una pizca.

  • La transición de Android no funciona en el teléfono
  • Cómo cambiar todas las transiciones de actividad de una vez en la aplicación de Android?
  • Android: ¿No hay transición entre las actividades?
  • Error de Android en la transición de la actividad
  • Android RecyclerView - animar la elevación del elemento al tocar
  • ¿Cómo puedo repetir una transición para siempre?
  • OverridePendingTransition en el adaptador gridview
  • Transición de elemento compartido (primer plano / fondo)
  • Efectos de transición con Android ImageView
  • Android elementos compartidos transición pre-21
  • Implementar página curl en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.