2011-09-07 22 views
11

Estaba buscando algo similar a SDWebImage para Android. Lo que SDWebImage hace en iOS es este:algo similar a SDWebImage en iOS para Android?

carga imágenes de URL, usa caché, realiza descargas asíncronas.

Estoy buscando algo similar para Android. ¿Alguna pista?

Gracias.

+0

algo similar: http://stackoverflow.com/questions/2912054/lazy-load-images-on-listview-in-androidbeginner-level – ahsan

Respuesta

1

Tengo esta respuesta en la siguiente enlace: Lazy load of images in ListView

package com.wilson.android.library; 

/* licencia a la Apache Software Foundation (ASF) en uno o más acuerdos de licencia para colaboradores. Consulte el archivo NOTIFICACIÓN distribuido con este trabajo para obtener información adicional con respecto a la propiedad de los derechos de autor. La ASF le otorga la licencia a este archivo bajo la Licencia Apache, Versión 2.0 (la "Licencia" ); no puede usar este archivo excepto en conformidad con con la Licencia. Usted puede obtener una copia de la Licencia en

http://www.apache.org/licenses/LICENSE-2.0

menos que sea requerido por la ley aplicable o se acuerde por escrito, el software distribuido bajo la licencia se distribuye en una "TAL CUAL", SIN GARANTÍAS O CONDICIONES DE CUALQUIER TIPO, ya sea expresa o implícita. Consulte la Licencia para el lenguaje específico que rige los permisos y limitaciones bajo la Licencia.
*/

import java.io.IOException; 

public class DrawableManager { 
private final Map<String, Drawable> drawableMap; 

public DrawableManager() { 
    drawableMap = new HashMap<String, Drawable>(); 
} 

public Drawable fetchDrawable(String urlString) { 
    if (drawableMap.containsKey(urlString)) { 
     return drawableMap.get(urlString); 
    } 

    Log.d(this.getClass().getSimpleName(), "image url:" + urlString); 
    try { 
     InputStream is = fetch(urlString); 
     Drawable drawable = Drawable.createFromStream(is, "src"); 


     if (drawable != null) { 
      drawableMap.put(urlString, drawable); 
      Log.d(this.getClass().getSimpleName(), "got a thumbnail drawable: " + drawable.getBounds() + ", " 
        + drawable.getIntrinsicHeight() + "," + drawable.getIntrinsicWidth() + ", " 
        + drawable.getMinimumHeight() + "," + drawable.getMinimumWidth()); 
     } else { 
      Log.w(this.getClass().getSimpleName(), "could not get thumbnail"); 
     } 

     return drawable; 
    } catch (MalformedURLException e) { 
     Log.e(this.getClass().getSimpleName(), "fetchDrawable failed", e); 
     return null; 
    } catch (IOException e) { 
     Log.e(this.getClass().getSimpleName(), "fetchDrawable failed", e); 
     return null; 
    } 
} 

public void fetchDrawableOnThread(final String urlString, final ImageView imageView) { 
    if (drawableMap.containsKey(urlString)) { 
     imageView.setImageDrawable(drawableMap.get(urlString)); 
    } 

    final Handler handler = new Handler() { 
     @Override 
     public void handleMessage(Message message) { 
      imageView.setImageDrawable((Drawable) message.obj); 
     } 
    }; 

    Thread thread = new Thread() { 
     @Override 
     public void run() { 
      //TODO : set imageView to a "pending" image 
      Drawable drawable = fetchDrawable(urlString); 
      Message message = handler.obtainMessage(1, drawable); 
      handler.sendMessage(message); 
     } 
    }; 
    thread.start(); 
} 

private InputStream fetch(String urlString) throws MalformedURLException, IOException { 
    DefaultHttpClient httpClient = new DefaultHttpClient(); 
    HttpGet request = new HttpGet(urlString); 
    HttpResponse response = httpClient.execute(request); 
    return response.getEntity().getContent(); 
} 

}

espero que ayude.

0

https://github.com/thest1/LazyList

Una biblioteca fácil de visualizar imágenes en Android. Las imágenes se están descargando de forma asincrónica en segundo plano. Las imágenes se almacenan en caché en la tarjeta SD y en la memoria. También se puede usar para GridView y solo para mostrar imágenes en un ImageView.

Algo a tener en cuenta, esto creará una carpeta en la tarjeta SD llamada LazyList, pero dado que es de código abierto, puede cambiar el nombre fácilmente. Esto fue construido con listas en mente, sin embargo, puedes usarlo fácilmente en cualquier lugar.

Cuestiones relacionadas