2010-07-30 6 views
6

Tengo una matriz de todos los URI de las imágenes que se muestran en una lista. Ahora quiero ejecutar un hilo en el fondo que obtiene estas imágenes de la web y almacenarlas en la tarjeta SD. Así que cuando hago clic en un elemento en particular en la lista en lugar de ir a buscar desde la web, debe obtenerse de la tarjeta SD en la nueva actividad.Descarga de imágenes en segundo plano mientras se muestra la lista

¿Cómo puedo hacer esto?

+0

Lea este hilo, hay mucha información. http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview Prefiero la biblioteca de Android Universal-Image-Loader https://github.com/nostra13/Android-Universal-Image-Loader, pero también puede encontrar otras soluciones. Espero eso ayude. –

Respuesta

0

Compruebe WebImageView por matthias käppler.

Puede reemplazar su forma de almacenar en caché las imágenes con la función de tarjeta SD que desee.

0

Uso AsyncTask descarga en segundo plano mientras mostrar la interfaz de usuario

File imageFile; 

guardado las imágenes de la web

public View getView(int position, View convertView, ViewGroup parent) {  
    imageFile = new File("/sdcard/jorgesysTemp/" + Arraypicname(position); 
    if(!imageFile.exists()){ 
    AsyncTaskProcess() //Download your images to sdcard 
    } 

Al hacer clic en cargar la imagen de su vista de lista de sdcard

@Override 
    protected void onListItemClick(ListView l, View v, final int position, long id) { 
    //load from sdcard 
     Bitmap bitmapImg = BitmapFactory.decodeFile("/sdcard/jorgesysTemp/" + Arraypicname(position)); 
     BitmapDrawable drawableImg = new BitmapDrawable(bitmapImg);     
     myimageview.setImageDrawable(drawableImg); 
... 
... 
...  
2

Usted podría intente usar mi perezoso-drawa bles marco (GPL v3 con licencia):

https://github.com/rtyley/lazy-drawables

-por desgracia no es del todo listo para la producción todavía, pero una de las cosas que intenta manejar:

  • de fondo (no-UI-hilo) carga de recursos de imagen
  • almacenamiento en caché eficiente de mapas de bits escalados - para el caso de uso en el que está descargando una única imagen grande, y quiere mostrarla cientos de veces en un formato de icono más pequeño en una lista o algo
  • transparencia de su uso, con lo cual quiero decir ...

... una vez que tenga una sesión perezoso embutición configurar, llenar una vista de la imagen es tan fácil como:

Drawable avatarDrawable = imageSession.get(someUserIdentifier); // doesn't block 
imageView.setImageDrawable(avatarDrawable); 

Usted don 'cuidar que puede haberle devuelto inmediatamente un mapa de bits normal, o ha generado una tarea asíncrona y ha devuelto un comodín dibujable: el dibujable se actualizará y será el anfitrión de ImageView cuando la tarea asíncrona se haya completado.

Esa es la teoría de todos modos. Parece que hasta cierto punto funciona hasta ahora, pero a veces esa actualización espontánea de UI no ocurre ... no estoy seguro de por qué: -}

Cuestiones relacionadas