Android – Crossfade mutiple imágenes en un ImageView

Estoy trabajando en una aplicación que necesita la imagen de cross-fading entre múltiples imágenes,

Lo que tengo: un ImageView y 50 drawables (.png) que voy a descargar desde la nube

Lo que quiero: 50 drawable debe crossfade (fade in y out) secuencialmente entre un intervalo de algunos segundos

Lo que he intentado: Sobre la base de algunas respuestas aquí en stackoverflow, probé la técnica TransitionDrawable, pero sólo podía crossfade entre 2 imágenes y no más y eso con tocar.

El video al que me referí: https://www.youtube.com/watch?v=atH3o2uh_94

Una vista personalizada para hacer eso:

 public class FadeView extends FrameLayout { private long mFadeDelay = 1000; private ImageView mFirst; private ImageView mSecond; private boolean mFirstShowing; public FadeView(Context context) { super(context); init(context); } public FadeView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public FadeView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } private void init(Context c){ mFirst = new ImageView(c); mSecond = new ImageView(c); mFirst.setAlpha(1.0f); mSecond.setAlpha(0.0f); mFirstShowing = true; addView(mFirst); addView(mSecond); } public void setFadeDelay(long fadeDelay) { mFadeDelay = fadeDelay; } public void ShowImage(Drawable d){ if(mFirstShowing){ mSecond.setImageDrawable(d); mSecond.animate().alpha(1.0f).setDuration(mFadeDelay); mFirst.animate().alpha(0.0f).setDuration(mFadeDelay); }else { mFirst.setImageDrawable(d); mSecond.animate().alpha(0.0f).setDuration(mFadeDelay); mFirst.animate().alpha(1.0f).setDuration(mFadeDelay); } mFirstShowing = !mFirstShowing; } } 

Uso:

 public class test extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final FadeView fw = new FadeView(this); setContentView(fw); fw.setOnClickListener(new View.OnClickListener() { Drawable d1 = getResources().getDrawable(android.R.drawable.ic_dialog_alert); Drawable d2 = getResources().getDrawable(android.R.drawable.ic_dialog_info); boolean flag; @Override public void onClick(View view) { if(flag){ fw.ShowImage(d1); }else { fw.ShowImage(d2); } flag = !flag; } }); } } 

A continuación, crear su personalizado Drawable que dibuja dos Drawables con valores de cambio de alfa, por supuesto, tendrá que añadir el apoyo para el intercambio de Drawables cuando se necesita para soportar varios

  • Paradas de servicio de Android
  • Parada de la conexión del proxy de medios de Android
  • Cómo hacer una copia de un archivo en android?
  • Android TextToSpeech solo escribe palabras cortas en lugar de pronunciarlas
  • ¿Cómo cambiar el comportamiento del método mediante la reflexión?
  • Cómo obtener fechas de la base de datos y comprobar si se solapan?
  • Objeto global de la aplicación Android
  • ¿Cómo crear un directorio en el almacenamiento interno al instalar la aplicación de Android?
  • Lectura de un documento PDF en Android
  • Google Voice recibe notificaciones de llamada nueva
  • Cómo calcular el tamaño de un archivo en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.