Recentemente ho avuto necessità di caricare dinamicamente dal web delle immagini in una ListView all'interno di un'app Android. Operazione non complicatissima, ma ciò che non mi soddisfaceva del codice che avevo scritto erano le prestazioni che ero riuscito ad ottenere.
Con un rapido giro in rete, ho trovato la libreria Android Universal Image Loading, con la quale ho risolto praticamente ogni problema.
Si tratta di uno strumento pratico e veloce per il caricamento e la visualizzazione di immagini nelle nostre app, con moltissime opzioni di configurazione che aiutano proprio nella gestione delle prestazioni (un occhio di riguardo va sempre tenuto per quanto riguarda velocità e consumo di dati).
L'uso di base è davvero semplice, dopo aver importato la libreria nel progetto, basta dichiarare la configurazione di base:
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() .cacheInMemory(true).imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) .displayer(new FadeInBitmapDisplayer(300)).build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( context).defaultDisplayImageOptions(defaultOptions) .memoryCache(new WeakMemoryCache()).build(); ImageLoader.getInstance().init(config);
Ovviamente, quelli che vedete sono i settaggi che ho scelto di utilizzare io, per una mappa completa delle possibilità offerte vi rimando alla pagina ufficiale del progetto su GitHub: Android Universal Image Loading.
Dopo la configurazione iniziale (io ad esempio l'ho inserita nel costruttore dell'Adapter relativo alla mia ListView), basta richiamare nel codice giusto due istruzioni:
imageLoader = ImageLoader.getInstance(); imageLoader.displayImage(obj.getImage(), image);
Avendo cura di dichiarare nel nostro codice un oggetto appartenente alla classe ImageLoader (che il sottoscritto con molta fantasia ha chiamato proprio imageLoader). Ovviamente nel mio esempio i due parametri passati al metodo displayImage altro non sono che l'URL dell'immagine e la ImageView in cui l'immagine stessa sarà poi visualizzata.
Ovviamente Android Universal Image Loader permette il caricamento di immagini anche da fonti diverse rispetto al web, sempre tenendo d'occhio lo sfruttamento delle risorse del dispositivo.
Semplice no?
Alla prossima..