2011-05-25 23 views
12

Im tratando de escribir una aplicación de Android muy básica que muestra alrededor de 5 imágenes, una detrás de la otra en la pantalla. Quiero que muestre una imagen diferente después de unos 10 segundos. ¿Alguien puede aconsejarme sobre cómo voy a dar esto? A continuación he esbozado lo que estaría buscando.Android Cambiar la imagen cada 10 segundos

Imagen 1
Foto 2
Imagen 3
Imagen 4
Imagen 5

visualización de pantalla completa Imagen 1
espere 10 segundos
Eliminar Imagen 1 y la visualización de la imagen 2
esperar 10 segundos
Quitar imagen 2 y mostrar imagen 3
Espere 10 segundos
Eliminar Imagen 3 y la visualización de la imagen 4
Espere 10 segundos
Eliminar Foto 4 y 5 de visualización de imagen
Espere 10 segundos

Nueva búsqueda

Respuesta

38

Ha considerado el uso Frame Animations?

Puede especificar un xml en la carpeta de anim que contiene una animación fotograma a fotograma, especificando la duración de cada imagen, y otros ajustes, comprobar que funciona

ACTUALIZACIÓN

También es posible construir una animación fotograma mediante programación por supuesto:

AnimationDrawable animation = new AnimationDrawable(); 
    animation.addFrame(getResources().getDrawable(R.drawable.image1), 100); 
    animation.addFrame(getResources().getDrawable(R.drawable.image2), 500); 
    animation.addFrame(getResources().getDrawable(R.drawable.image3), 300); 
    animation.setOneShot(false); 

    ImageView imageAnim = (ImageView) findViewById(R.id.img); 
    imageAnim.setBackgroundDrawable(animation); 

    // start the animation! 
    animation.start() 
+0

gracias, funcionó muy bien, soy un principiante de Android y estoy programando algo para una tableta usando 3.1 cuando ejecuto la aplicación en mi dispositivo Android virtual, aparece una pantalla mucho más pequeña en el retrato como para arreglar esto y ¿Hay alguna manera fácil de hacer que una vista de imagen llene la pantalla? Muchas gracias –

+1

intente poner esto en las propiedades ImageView xml: android: layout_width = "fill_parent" android: layout_height = "fill_parent". Y luego configure también la propiedad android: scaleType con el valor que necesita. Mire este enlace: http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html – BFil

+0

Funciona bien @BFil. ¡¡¡Gracias!!! – groff07

2

Crear una Runnable que ejecuta el cambio que quieres (supongo que va a cambiar un ImageView 's mapa de bits/dibujable), y publicarlos con retraso en el bucle de thread principal, utilizando un Handler y su método postDelayed().

Para que sea un bucle, podría tener la publicación ejecutable por sí misma.

6

puede utilizar el CountDownTimer: siga estos pasos:

1) declarar un array que contendrá los identifients de sus imágenes

2) declarar la CountDownTimer así:

int i=0; 
new CountDownTimer(10000,1000) { 

       @Override 
       public void onTick(long millisUntilFinished) {} 

       @Override 
       public void onFinish() { 
        imgView.setImageDrawable(sdk.getContext().getResources().getDrawable(array[i])); 
        i++; 
        if(i== array.length-1) i=0; 
        start(); 
       } 
      }.start(); 
+0

Esto funcionó. Muchas gracias. –

5

crear blink.xml

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/selected" android:oneshot="false"> 
<item android:drawable="@drawable/Picture_1" android:duration="10000" /> 
<item android:drawable="@drawable/Picture_2" android:duration="10000" /> 
<item android:drawable="@drawable/Picture_3" android:duration="10000" /> 
<item android:drawable="@drawable/Picture_4" android:duration="10000" /> 
<item android:drawable="@drawable/Picture_5" android:duration="10000" /> 
</animation-list> 

ponga blink.xml en la carpeta dibujable y en la actividad Código escriba esto.

ImageView mImageView ; 
mImageView = (ImageView)findViewById(R.id.imageView); //this is your imageView 
mImageView .setImageDrawable(getResources().getDrawable(R.drawable.blink)); 

¡obtendrá lo que quiere!

+1

Este es el limpiador –

+0

Animación Cuadro arrastradoAnimación = (AnimaciónDibujada) mImageView.getDrawable(); frameAnimation.start(); deberías agregar estas líneas también, para comenzar la animación. – praveenb

Cuestiones relacionadas