2011-09-07 20 views
11

Stavo cercando qualcosa di simile a SDWebImage per Android. Che cosa fa SDWebImage in iOS:qualcosa di simile a SDWebImage in iOS per Android?

carica le immagini dall'URL, utilizza la cache, esegue il download asincrono.

Sto cercando qualcosa di simile per Android. Qualche suggerimento?

Grazie.

+0

qualcosa di simile: http://stackoverflow.com/questions/2912054/lazy-load-images-on-listview-in-androidbeginner-level – ahsan

risposta

1

ho avuto questa risposta nel seguente link: Lazy load of images in ListView

package com.wilson.android.library; 

/* Licensed to Apache Software Foundation (ASF) sotto uno o più contratti di licenza collaboratore. Vedere il file AVVISO distribuito con questo lavoro per ulteriori informazioni relative alla proprietà del copyright. L'ASF rilascia questo file sotto la licenza Apache, versione 2.0 (la " " Licenza "); non è possibile utilizzare questo file se non in conformità con con la Licenza. È possibile ottenere una copia della licenza al

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

Se non richiesto dalla legge applicabile o concordato per iscritto, software distribuito sotto la licenza viene distribuito su un "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI OGNI KIND, espressi o impliciti. Vedere la Licenza per le autorizzazioni e limitazioni specifiche della lingua sotto la Licenza.
*/

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(); 
} 

}

Speranza che aiuta.

0

https://github.com/thest1/LazyList

una semplice libreria per visualizzare le immagini in Android. Le immagini vengono scaricate in modo asincrono sullo sfondo. Le immagini vengono memorizzate nella cache sulla scheda SD e in memoria. Può essere utilizzato anche per GridView e solo per visualizzare le immagini in un ImageView.

Qualcosa da tenere a mente, questo creerà una cartella sulla scheda SD chiamata LazyList, ma dal momento che è open source è possibile cambiare facilmente il nome. Questo è stato costruito tenendo in mente gli elenchi, tuttavia puoi altrettanto facilmente utilizzarlo ovunque.

Problemi correlati