Glide: cos'è, libreria di immagini e utilizzo in Android

Autore: IT Sectr Pubblicato: 2026-05-05 Tempo di lettura: 8 min

Glide è una libreria per il caricamento di immagini in Android, supportata da Google attraverso il progetto Bumptech. La libreria offre un caricamento efficiente di immagini, animazioni GIF e fotogrammi video con gestione automatica della memoria. Secondo il repository GitHub di Glide, il progetto è utilizzato da oltre 200.000 applicazioni. Glide è raccomandato da Google come libreria preferita per il caricamento di grafica in Android.

Punti chiave

  • Glide — libreria di caricamento immagini di Google con supporto per GIF e fotogrammi video
  • Cache a tre livelli: memoria, disco e risorse attive per la massima velocità
  • Ciclo di vita — Glide sospende automaticamente le richieste quando un'Activity viene messa in pausa
  • GIF e WebP animati sono supportati nativamente senza plugin aggiuntivi
  • Thumbnail consente di mostrare prima una versione ridotta, poi quella completa

Cos'è Glide?

Glide è una libreria per il caricamento rapido ed efficiente di immagini, GIF animate e fotogrammi video nelle applicazioni Android. Il progetto è sviluppato da Bumptech sotto l'egida di Google ed è ampiamente utilizzato nelle applicazioni ufficiali di Google.

L'architettura interna di Glide è costruita su un approccio basato su componenti: Engine gestisce l'esecuzione delle richieste, DecodeJob si occupa della decodifica e ResourceDecoder converte i dati grezzi in Bitmap o Drawable. Ogni fase può essere personalizzata tramite moduli e registri, rendendo Glide una libreria estremamente flessibile per formati di immagine non standard.

A differenza di molti concorrenti, Glide è stato progettato fin dall'inizio tenendo conto delle specificità di Android: ciclo di vita di Activity e Fragment, rotazioni dello schermo, cambi di configurazione. La libreria sospende e riprende automaticamente i caricamenti in base allo stato del componente.

Secondo Android Developers, Glide è la libreria consigliata per il caricamento di immagini nella documentazione ufficiale di Google. Viene utilizzata in Google Play, Google Maps e altri prodotti dell'azienda, confermando la sua affidabilità e prestazioni.

La differenza principale tra Glide e le alternative è il ridimensionamento automatico delle immagini per adattarsi alla dimensione dell'ImageView. Mentre Picasso carica l'immagine a piena risoluzione e poi la ridimensiona, Glide decodifica il file direttamente nella dimensione necessaria. Questo riduce il consumo di picco della memoria e velocizza la visualizzazione in liste con diverse dimensioni di cella.

Principali funzionalità di Glide

Glide fornisce un'ampia gamma di funzioni per lavorare con le immagini, coprendo scenari di caricamento semplici e complessi.

Supporto per GIF e WebP animati

GIF e WebP animati vengono caricati e visualizzati da Glide con la stessa facilità delle immagini statiche. La libreria rileva automaticamente il formato dal tipo MIME e decodifica l'animazione, mostrando i fotogrammi in un thread in background. I metodi asGif e asBitmap sono disponibili per il controllo della riproduzione.

Integrazione con il ciclo di vita

Glide si lega automaticamente al ciclo di vita di Activity, Fragment e View. Quando un'Activity viene messa in pausa, i caricamenti vengono sospesi; quando viene distrutta, vengono annullati. Questo previene perdite di memoria e il caricamento di immagini per schermi già chiusi. L'integrazione funziona tramite il supporto di LifecycleOwner.

Caricamento di fotogrammi video

Glide può estrarre fotogrammi da video tramite URL o percorso locale. Il metodo asBitmap() in combinazione con load() viene utilizzato per gli URI video. Glide seleziona automaticamente un fotogramma chiave o un fotogramma a un timestamp specificato. Questo è utile per mostrare anteprime video.

Generazione e configurazione di GlideApp

GlideApp è una classe generata che fornisce un'API estesa basata sulla configurazione di AppGlideModule. Consente di utilizzare metodi non disponibili in Glide.with standard: caricamento con opzioni personalizzate predefinite, integrazione con librerie e trasformazioni preimpostate. La generazione richiede l'annotazione @GlideModule in una classe che estende AppGlideModule.

Come funziona Glide?

Glide utilizza un'architettura a più livelli con motore, decodificatori, trasformazioni e cache. Ogni richiesta passa attraverso una catena di gestori che ottimizzano il caricamento per uno specifico ImageView.

Architettura e pipeline

Quando viene chiamato into(view), Glide controlla la cache: risorse attive, cache in memoria, cache su disco e solo poi la rete. L'immagine viene automaticamente ridimensionata alla dimensione dell'ImageView di destinazione tenendo conto della densità dello schermo e del scaleType. Questo riduce l'utilizzo della memoria — un vantaggio chiave di Glide.

java
Glide.with(context)
    .load("https://example.com/image.jpg")
    .placeholder(R.drawable.loading)
    .error(R.drawable.error)
    .override(400, 300)
    .centerCrop()
    .into(imageView)

Installazione e configurazione di Glide

L'installazione di Glide viene eseguita tramite Gradle. La libreria richiede la configurazione tramite AppGlideModule per la generazione dell'API. La versione minima dell'API Android è 21.

Aggiunta delle dipendenze

Nel build.gradle, aggiungi Glide con il processore di annotazioni kapt per la generazione dell'API GlideApp. Per Kotlin, usa kapt invece di annotationProcessor. Glide versione 4.16+ funziona stabilmente con Android Gradle Plugin 8.x.

groovy
dependencies {
    implementation "com.github.bumptech.glide:glide:4.16.0"
    annotationProcessor "com.github.bumptech.glide:compiler:4.16.0"
}

// Usa kapt per Kotlin
// kapt "com.github.bumptech.glide:compiler:4.16.0"

Creazione di AppGlideModule

AppGlideModule è un componente obbligatorio per configurare Glide. Consente di impostare la dimensione della cache, uno HttpStack personalizzato e registrare decodificatori personalizzati. Il modulo viene scansionato da Glide all'avvio dell'applicazione. L'annotazione @GlideModule lo registra automaticamente.

java
@GlideModule
public class MyGlideModule extends AppGlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        int diskCacheSize = 250 * 1024 * 1024;
        builder.setDiskCache(
            new DiskLruCacheFactory(cacheDir.getPath(), diskCacheSize)
        );
    }
}

Esempi di utilizzo di Glide

Gli esempi seguenti mostrano scenari tipici: caricamento di immagini, lavoro con GIF ed estrazione di fotogrammi video.

Caricamento di un'immagine con placeholder

Il caricamento di base tramite Glide.with().load().into() — codice minimo per visualizzare un'immagine dalla rete. Glide si adatta automaticamente alla dimensione dell'ImageView. Il placeholder viene mostrato durante il caricamento e error in caso di fallimento.

java
Glide.with(fragment)
    .load("https://example.com/photo.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .skipMemoryCache(true)
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .into(imageView)

Caricamento di un'immagine GIF

Un GIF viene caricato come un'immagine statica — Glide rileva automaticamente il formato dal tipo di contenuto. Per forzare il caricamento come immagine statica, usa asBitmap(); per GIF, usa asGif(). Glide decodifica efficientemente solo i fotogrammi visibili.

java
Glide.with(context)
    .asGif()
    .load("https://example.com/animation.gif")
    .into(imageView)

// Caricare il primo fotogramma di un GIF come immagine statica
Glide.with(context)
    .asBitmap()
    .load("https://example.com/animation.gif")
    .into(imageView)

Caricamento di un fotogramma video

Un fotogramma video viene estratto da Glide da un URI video locale o remoto. Per impostazione predefinita, Glide carica il fotogramma chiave. Per specificare un timestamp preciso, usa frameMillis. Questo è comodo per mostrare anteprime in una galleria video.

java
String videoUrl = "https://example.com/video.mp4";

Glide.with(context)
    .asBitmap()
    .load(videoUrl)
    .override(200, 200)
    .into(imageView)

Ottimizzazione di Glide per liste grandi

L'ottimizzazione di Glide per RecyclerView è un'abilità fondamentale nello sviluppo di applicazioni con un gran numero di immagini. Una configurazione appropriata previene rallentamenti ed errori OOM.

Una delle funzionalità chiave di Glide è l'integrazione con RecyclerView tramite RecyclerViewPreloader. Questo componente analizza la velocità e la direzione dello scorrimento, precaricando le immagini che appariranno sullo schermo tra pochi elementi. Per utilizzare il precaricatore, è necessario implementare l'interfaccia PreloadSizeProvider e passarla al costruttore insieme all'ImageView di destinazione.

L'uso del metodo override() con dimensioni esatte dell'ImageView accelera significativamente il caricamento. Quando Glide conosce la dimensione esatta della destinazione, può decodificare l'immagine direttamente alla risoluzione richiesta, saltando la fase di ridimensionamento. Questo riduce il tempo di decodifica e il consumo di picco della memoria del 30–40%.

Per feed con contenuto eterogeneo, usa diversi RequestOptions per ogni tipo di elemento. Ad esempio, per grandi immagini banner, puoi impostare override(1200, 600) e qualità RGB_565, mentre per gli avatar — override(200, 200) e arrotondamento tramite transform. Questo approccio utilizza le risorse in modo ottimale per ogni tipo di contenuto.

Gestione degli errori di caricamento

Glide offre opzioni flessibili per la gestione degli errori tramite immagini di errore e RequestListener personalizzato. RequestListener consente di reagire al caricamento riuscito o al fallimento — registrare errori o inviare analisi. Puoi anche configurare un fallback — un'immagine mostrata quando load() riceve null invece di un URL.

Usa RecyclerViewPreloader per precaricare le immagini prima che l'utente scorra fino ad esse. Glide supporta l'integrazione con RecyclerView tramite un precaricatore che analizza la velocità di scorrimento e carica le immagini in anticipo.

La moltiplicazione delle thumbnail consente di mostrare prima una versione ridotta dell'immagine, poi caricare la versione completa. Chiamare thumbnail(0.25f) carica una versione al 25% della dimensione che viene visualizzata immediatamente, mentre l'immagine a dimensione intera viene caricata dopo. Questo crea l'impressione di un caricamento istantaneo.

Per gli adattatori di lista, usa .override() con dimensioni esatte dell'ImageView in modo che Glide non ridimensioni l'immagine ogni volta. Questo riduce il carico della CPU e il consumo di memoria. La dimensione della cache viene selezionata sperimentalmente, ma 250 MB per il disco e il 20% della memoria disponibile sono un buon punto di partenza.

Domande frequenti

Qual è la differenza tra Glide e Picasso?

Glide supporta GIF, fotogrammi video e WebP animati. Gestisce la memoria in modo più efficiente ed è raccomandato da Google. Picasso è più piccolo e più semplice da usare. Per progetti complessi, scegli Glide.

Come si lega Glide al ciclo di vita?

Glide accetta un LifecycleOwner (Fragment, Activity) o una View. La libreria traccia automaticamente lo stato tramite LifecycleObserver: sospende il caricamento in pausa e lo annulla alla distruzione, prevenendo perdite.

Posso caricare solo il primo fotogramma di un GIF in Glide?

, usa asBitmap() prima di load(). Glide caricherà il GIF come immagine statica e mostrerà solo il primo fotogramma. Questo è utile per le liste dove l'animazione GIF non è desiderata per motivi di prestazioni.

Come influisce la cache di Glide sulle prestazioni?

La cache di Glide è composta da tre livelli: risorse attive (attualmente in uso), memoria (cache LRU) e disco (LruCache). Le immagini caricate dalla cache vengono visualizzate istantaneamente. La cache viene automaticamente cancellata quando la memoria è scarsa.

Come configurare un client HTTP personalizzato per Glide?

Un client HTTP personalizzato viene registrato tramite OkHttpUrlLoader in AppGlideModule. Sovrascrivi registerComponents e registra il tuo OkHttpClient. Questo consente di aggiungere intercettori, certificati e timeout personalizzati.

Riepilogo

  • Glide — libreria di caricamento immagini di Google con supporto per GIF e fotogrammi video
  • Cache a tre livelli fornisce accesso istantaneo alle immagini caricate ripetutamente
  • Ciclo di vita sospende e annulla automaticamente le richieste
  • Fotogrammi video vengono estratti da video locali e remoti tramite asBitmap
  • Thumbnail moltiplicata accelera la visualizzazione delle immagini nelle liste
  • Raccomandazione di Google rende Glide lo standard per le applicazioni Android
  • RecyclerViewPreloader precarica le immagini prima che l'utente scorra

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche