Tendrá que usar animaciones interpoladas para hacer esto. Esencialmente, lo que necesita hacer es tener dos objetos ImageView, uno para la imagen actual y otro para la nueva imagen. Crear dos animaciones interpoladas de res/animal/fadeout.xml:
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="500" />
y res/animal/fadein.xml:
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:startOffset="500"
android:duration="500" />
A continuación, utilice un widget de ImageSwitcher para cambiar entre las vistas:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
setContentView(ll);
final ImageSwitcher is = new ImageSwitcher(this);
is.setOutAnimation(this, R.anim.fadeout);
is.setInAnimation(this, R.anim.fadein);
ImageView iv1 = new ImageView(this);
iv1.setImageResource(R.drawable.icon);
is.addView(iv1);
is.showNext();
ll.addView(is);
Button b = new Button(this);
ll.addView(b);
b.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
ImageView iv2 = new ImageView(MainActivity.this);
iv2.setImageResource(R.drawable.icon2);
is.addView(iv2);
is.showNext();
}
});
}
Hay una serie de artículos en my blog sobre animaciones interpoladas.
No estoy seguro de si esto es lo que estoy buscando. Intento animar una pantalla de bienvenida mientras la aplicación descarga datos, por lo que no tengo simplemente una imagen estática. La animación contendría un mínimo de 4 imágenes, y la animación debería realizarse por sí sola. Sin interacción del usuario – tomislav2012
Utilicé un botón para mantener el código simple. Puede usar un ImageSwitcher con una secuencia de fondo para cambiar periódicamente la imagen. –