Glide: ce este, biblioteca de imagini și aplicarea în Android

Autor: IT Sectr Publicat: 2026-05-05 Timp de citire: 8 min

Glide — este o bibliotecă pentru încărcarea imaginilor în Android, susținută de Google prin proiectul Bumptech. Biblioteca asigură încărcarea eficientă a imaginilor, animațiilor GIF și cadrelor video cu gestionare automată a memoriei. Conform datelor repository-ului GitHub Glide, proiectul este utilizat de peste 200 000 de aplicații. Glide este recomandat de Google ca bibliotecă preferată pentru încărcarea graficii în Android.

Principalele puncte

  • Glide — bibliotecă de încărcare a imaginilor de la Google cu suport pentru GIF și cadre video
  • Cache pe trei niveluri: memorie, disc și resurse active pentru viteză maximă
  • Ciclul de viață — Glide întrerupe automat cererile la pauzarea Activity
  • GIF și WebP animate sunt suportate din cutie fără pluginuri suplimentare
  • Thumbnail permite afișarea mai întâi a versiunii reduse, apoi a celei complete

Ce este Glide?

Glide — este o bibliotecă pentru încărcarea rapidă și eficientă a imaginilor, GIF-urilor animate și cadrelor video în aplicațiile Android. Proiectul este dezvoltat de Bumptech sub egida Google și este utilizat pe scară largă în aplicațiile oficiale Google.

Arhitectura internă a Glide este construită pe o abordare componentă: Engine gestionează executarea cererilor, DecodeJob se ocupă de decodare, iar ResourceDecoder transformă datele brute în Bitmap sau Drawable. Fiecare etapă poate fi personalizată prin module și registre, ceea ce face din Glide o bibliotecă extrem de flexibilă pentru formate de imagini non-standard.

Spre deosebire de mulți concurenți, Glide a fost proiectat de la început ținând cont de specificul Android: ciclul de viață al Activity și Fragment, rotațiile ecranului, modificarea configurației. Biblioteca întrerupe și reia automat încărcările în funcție de starea componentului.

Conform Android Developers, Glide este biblioteca recomandată pentru încărcarea imaginilor în documentația oficială Google. Este utilizată în aplicațiile Google Play, Google Maps și alte produse ale companiei, ceea ce confirmă fiabilitatea și performanța sa.

Diferența cheie a Glide față de analogi — scalarea automată a imaginilor la dimensiunea ImageView. Dacă Picasso încarcă imaginea la rezoluție maximă și apoi o scalează, Glide decodifică fișierul direct în dimensiunea necesară. Aceasta reduce consumul de vârf al memoriei și accelerează afișarea în liste cu diferite dimensiuni de celule.

Principalele capacități ale Glide

Glide oferă un set larg de funcții pentru lucrul cu imagini, acoperind atât scenarii simple, cât și complexe de încărcare a conținutului.

Suport pentru GIF și WebP animate

GIF și WebP animate Glide le încarcă și le afișează la fel de simplu ca imaginile statice. Biblioteca detectează automat formatul după tipul MIME și decodifică animația, afișând cadrele într-un fir de execuție de fundal. Pentru gestionarea redării sunt disponibile metodele asGif și asBitmap.

Integrare cu ciclul de viață

Glide se leagă automat de ciclul de viață al Activity, Fragment și View. La pauzarea Activity, încărcările sunt întrerupte, la distrugere — anulate. Aceasta previne scurgerile de memorie și încărcarea imaginilor pentru ecrane deja închise. Integrarea funcționează prin suportul LifecycleOwner.

Încărcarea cadrelor video

Glide poate extrage cadre din video după URL sau cale locală. Pentru aceasta se folosește metoda asBitmap() în combinație cu load() pentru URI video. Glide selectează automat cadrul cheie sau cadrul după marcajul de timp specificat. Acest lucru este util pentru afișarea previzualizărilor video.

Generarea și configurarea GlideApp

GlideApp — este o clasă generată care oferă un API extins pe baza configurației AppGlideModule. Cu ajutorul său pot fi utilizate metode indisponibile în Glide.with standard: încărcare cu opțiuni implicite personalizate, integrare cu biblioteci și transformări prestabilite. Pentru generare este necesară adnotarea @GlideModule într-o clasă care moștenește AppGlideModule.

Cum funcționează Glide?

Glide folosește o arhitectură pe mai multe niveluri cu motor, decodoare, transformări și cache. Fiecare cerere trece printr-un lanț de handler-e care optimizează încărcarea pentru un ImageView specific.

Arhitectura și pipeline

La apelul into(view), Glide verifică cache-ul: resurse active, cache în memoria RAM, cache pe disc și abia apoi rețeaua. Imaginea este scalată automat la dimensiunea ImageView țintă, ținând cont de densitatea ecranului și scaleType. Aceasta reduce utilizarea memoriei — avantajul cheie al 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)

Instalarea și configurarea Glide

Instalarea Glide se face prin Gradle. Biblioteca necesită configurare prin AppGlideModule pentru generarea API. Versiunea minimă Android API — 21.

Adăugarea dependințelor

În build.gradle adăugați Glide cu handler-ul de adnotări kapt pentru generarea API-ului GlideApp. Pentru Kotlin folosiți kapt în loc de annotationProcessor. Versiunea Glide 4.16+ funcționează stabil cu 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"
}

// Pentru Kotlin utilizați kapt
// kapt "com.github.bumptech.glide:compiler:4.16.0"

Crearea AppGlideModule

AppGlideModule — component obligatoriu pentru configurarea Glide. Permite setarea dimensiunii cache-ului, a HttpStack-ului personalizat și înregistrarea propriilor decodoare. Modulul este scanat de Glide la pornirea aplicației. Adnotarea @GlideModule îl înregistrează automat.

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

Exemple de utilizare a Glide

Exemplele de mai jos demonstrează scenarii tipice: încărcarea imaginii, lucrul cu GIF și extragerea cadrului video.

Încărcarea imaginii cu placeholder

Încărcarea de bază prin Glide.with().load().into() — cod minim pentru afișarea unei imagini din rețea. Glide ajustează automat dimensiunea ImageView. Placeholder-ul este afișat în timpul încărcării, iar error — la eroare.

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)

Încărcarea imaginii GIF

GIF se încarcă la fel ca o imagine statică — Glide detectează automat formatul după tipul de conținut. Pentru încărcarea forțată ca imagine statică folosiți asBitmap(), pentru GIF — asGif(). Glide decodifică eficient doar cadrele vizibile.

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

// Încarcă primul cadru GIF ca imagine statică
Glide.with(context)
    .asBitmap()
    .load("https://example.com/animation.gif")
    .into(imageView)

Încărcarea cadrului video

Cadrul video este extras de Glide după URI-ul videoclipului local sau de la distanță. Implicit, Glide încarcă cadrul cheie. Pentru a specifica un marcaj de timp concret se folosește frameMillis. Acest lucru este convenabil pentru afișarea previzualizărilor în galeria video.

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

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

Optimizarea Glide pentru liste mari

Optimizarea Glide pentru RecyclerView — o abilitate critică la dezvoltarea aplicațiilor cu un număr mare de imagini. Configurarea corectă previne întârzierile și erorile OOM.

Una dintre capacitățile cheie ale Glide — integrarea cu RecyclerView prin RecyclerViewPreloader. Această componentă analizează viteza de derulare și direcția de mișcare, preîncărcând imaginile care vor apărea pe ecran după câteva elemente. Pentru lucrul cu preîncărcătorul este necesară implementarea interfeței PreloadSizeProvider și transmiterea acestuia în constructor împreună cu ImageView-ul țintă.

Utilizarea metodei override() cu dimensiuni exacte ale ImageView accelerează semnificativ încărcarea. Când Glide cunoaște dimensiunea exactă a țintei, poate decodifica imaginea direct în rezoluția necesară, omițând etapa de scalare. Aceasta scurtează timpul de decodare și reduce consumul de vârf al memoriei cu 30–40%.

Pentru feed-uri cu conținut eterogen utilizați RequestOptions diferite pentru fiecare tip de element. De exemplu, pentru imagini banner mari se poate seta override(1200, 600) și calitatea RGB_565, iar pentru avataruri — override(200, 200) și rotunjire prin transform. O astfel de abordare permite utilizarea optimă a resurselor pentru fiecare tip de conținut.

Gestionarea erorilor de încărcare

Glide oferă posibilități flexibile pentru gestionarea erorilor prin imagini error și RequestListener personalizat. RequestListener permite reacționarea la încărcarea reușită sau eroare, logarea defecțiunilor sau trimiterea de analytics. Se poate configura și un fallback — imagine care se afișează când load() primește null în loc de link.

Utilizați RecyclerViewPreloader pentru preîncărcarea imaginilor înainte ca utilizatorul să deruleze până la ele. Glide suportă integrarea cu RecyclerView printr-un preîncărcător care analizează viteza de derulare și încarcă imaginile în avans.

Multiplicarea thumbnail permite afișarea mai întâi a versiunii reduse a imaginii, apoi încărcarea celei complete. Apelul thumbnail(0.25f) încarcă versiunea de 25% din dimensiune, care se afișează imediat, iar imaginea la scară completă se încarcă mai târziu. Aceasta creează senzația de încărcare instantanee.

Pentru adaptoarele de listă folosiți .override() cu dimensiuni exacte ale ImageView pentru ca Glide să nu scaleze imaginea de fiecare dată. Aceasta reduce încărcarea CPU și consumul de memorie. Dimensiunea cache-ului se alege experimental, dar 250 MB pentru disc și 20% din memoria disponibilă reprezintă un punct de plecare bun.

Întrebări frecvente

Cu ce se deosebește Glide de Picasso?

Glide suportă GIF, cadre video și WebP animate. Gestionează memoria mai eficient și este recomandat de Google. Picasso este mai mic și mai simplu de utilizat. Pentru proiecte complexe alegeți Glide.

Cum se leagă Glide de ciclul de viață?

Glide primește LifecycleOwner (Fragment, Activity) sau View. Biblioteca urmărește automat starea prin LifecycleObserver: întrerupe încărcarea la pauză și anulează la distrugere, prevenind scurgerile.

Se poate încărca doar primul cadru al unui GIF în Glide?

Da, folosiți asBitmap() înainte de load(). Glide va încărca GIF-ul ca imagine statică și va afișa doar primul cadru. Acest lucru este util pentru liste unde animația GIF este nedorită din cauza performanței.

Cum influențează cache-ul Glide performanța?

Cache-ul Glide constă din trei niveluri: resurse active (utilizate curent), memoria RAM (cache LRU) și discul (LruCache). Imaginile încărcate din cache se afișează instantaneu. Cache-ul se curăță automat la insuficiența memoriei.

Cum se configurează un client HTTP personalizat pentru Glide?

Clientul HTTP personalizat se înregistrează prin OkHttpUrlLoader în AppGlideModule. Suprascrieți registerComponents și înregistrați propriul OkHttpClient. Aceasta permite adăugarea de interceptoare, certificate și timeout-uri personalizate.

Concluzii

  • Glide — bibliotecă de încărcare a imaginilor de la Google cu suport pentru GIF și cadre video
  • Cache-ul pe trei niveluri asigură acces instantaneu la imaginile încărcate repetat
  • Ciclul de viață întrerupe și anulează cererile automat
  • Cadrele video se extrag din videoclipuri locale și de la distanță prin asBitmap
  • Multiplicarea thumbnail accelerează afișarea imaginilor în liste
  • Recomandarea Google face din Glide un standard pentru aplicațiile Android
  • RecyclerViewPreloader preîncarcă imaginile înainte de derularea utilizatorului

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și