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
- Cómo cambiar la línea azul en el AlertDialog (tema Holo)
- Cómo cargar marcadores dinámicamente para la posición actual en google-maps de Android?
- Android: ClassNotFoundException al pasar el objeto serializable a la actividad
- Botones sobre Mapview
- Las etiquetas HTML no funcionan dentro de strings.xml
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
- Problemas al utilizar unirest en Android Studio
- Intención no recibida del evento Android Geofence
- NoClassDefFoundError: Problemas con la vinculación de mi propio frasco al proyecto de Android
- ¿Cómo obtener el ancho bruto de dispositivo y la altura o el ancho y la altura real de la pantalla?
- Necesito ayuda con Android y Java
- Android ExpandableListView poblado dos veces
- Restaurar la pila de aplicaciones de Android desde el fondo
- Voltear una imagen de mapa de bits horizontal o verticalmente
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
- Color de fondo de notificación predeterminado
- Cómo mantener la escucha de notificaciones push en Android en segundo plano