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.

2 Solutions collect form web for “Cómo hacer continuamente ejecutando TransitionDrawable animación en Android?”

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.

  • Desarrollador de Android se traslada a iOS - ¿Qué necesito saber?
  • ¿Cómo puedo configurar el valor alfa de una vista completa en el nivel 7 de api (Android 2.1)
  • Android Google IO 2014: ¿Cómo implementar la transición de la actividad con fragmentos?
  • OverridePendingTransition en el adaptador gridview
  • Conversión de imagen a vídeo con efecto de transición
  • ¿Hay una manera de llamar `overridePendingTransition` de una clase que no extiende la clase Activity?
  • OverridePendingTransition no funciona cuando se utiliza FLAG_ACTIVITY_REORDER_TO_FRONT
  • Android RecyclerView - animar la elevación del elemento al tocar
  • Implementar página curl en android?
  • Efectos de transición con Android ImageView
  • ¿Cómo puedo repetir una transición para siempre?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.