Glide — är ett bibliotek för att ladda bilder i Android, som stöds av Google genom projektet Bumptech. Biblioteket tillhandahåller effektiv laddning av bilder, GIF-animationer och videoramar med automatisk minneshantering. Enligt data från Glides GitHub-repository används projektet av över 200 000 appar. Glide rekommenderas av Google som det föredragna biblioteket för att ladda grafik i Android.
Huvudpunkter
Glide — är ett bibliotek för snabb och effektiv laddning av bilder, animerade GIF och videoramar i Android-applikationer. Projektet utvecklas av Bumptech under ledning av Google och används i stor utsträckning i Googles officiella applikationer.
Glides interna arkitektur är byggd på ett komponentbaserat tillvägagångssätt: Engine hanterar utförandet av förfrågningar, DecodeJob ansvarar för avkodning och ResourceDecoder omvandlar rådata till Bitmap eller Drawable. Varje steg kan anpassas genom moduler och register, vilket gör Glide till ett extremt flexibelt bibliotek för icke-standardiserade bildformat.
Till skillnad från många konkurrenter har Glide från början designats med hänsyn till Androids särdrag: livscykeln för Activity och Fragment, skärmrotationer, konfigurationsändringar. Biblioteket pausar och återupptar automatiskt laddningar beroende på komponentens tillstånd.
Enligt Android Developers är Glide det rekommenderade biblioteket för att ladda bilder i Googles officiella dokumentation. Det används i Google Play, Google Maps och andra produkter från företaget, vilket bekräftar dess tillförlitlighet och prestanda.
Den viktigaste skillnaden mellan Glide och alternativen — automatisk skalning av bilder till ImageView-storleken. Om Picasso laddar bilden i full upplösning och sedan skalar den, avkodar Glide filen direkt i den storlek som behövs. Detta minskar toppminnesanvändningen och påskyndar visningen i listor med olika cellstorlekar.
Glide tillhandahåller en bred uppsättning funktioner för att arbeta med bilder, som täcker både enkla och komplexa scenarier för inladdning av innehåll.
GIF och animerade WebP laddar och visar Glide lika enkelt som statiska bilder. Biblioteket identifierar automatiskt formatet baserat på MIME-typ och avkodar animationen, och visar bildrutorna i en bakgrundstråd. För att hantera uppspelningen finns metoderna asGif och asBitmap.
Glide binder automatiskt till livscykeln för Activity, Fragment och View. När Activity pausas stoppas laddningarna, när det förstörs avbryts de. Detta förhindrar minnesläckor och laddning av bilder för redan stängda skärmar. Integrationen fungerar genom stöd för LifecycleOwner.
Glide kan extrahera bildrutor från video baserat på URL eller lokal sökväg. För detta används metoden asBitmap() i kombination med load() för video-URI. Glide väljer automatiskt nyckelramen eller ramen baserat på en angiven tidsstämpel. Detta är användbart för att visa videoförhandsvisningar.
GlideApp — är en genererad klass som tillhandahåller ett utökat API baserat på AppGlideModule-konfigurationen. Med dess hjälp kan man använda metoder som inte är tillgängliga i standard Glide.with: laddning med anpassade standardalternativ, integration med bibliotek och förinställda transformationer. För generering krävs @GlideModule-annotering i en klass som ärver AppGlideModule.
Glide använder en flerskiktad arkitektur med motor, avkodare, transformationer och cache. Varje förfrågan passerar genom en kedja av hanterare som optimerar laddningen för en specifik ImageView.
Vid anrop av into(view) kontrollerar Glide cachen: aktiva resurser, cache i RAM, diskcache och först därefter nätverket. Bilden skalas automatiskt till mål-ImageViewens storlek med hänsyn till skärmdensitet och scaleType. Detta minskar minnesanvändningen — Glides främsta fördel.
Glide.with(context)
.load("https://example.com/image.jpg")
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.override(400, 300)
.centerCrop()
.into(imageView)
Installation av Glide sker via Gradle. Biblioteket kräver konfiguration via AppGlideModule för att generera API. Minsta Android API-version — 21.
I build.gradle lägger du till Glide med kapt-annotationsprocessorn för att generera GlideApp API. För Kotlin använder du kapt istället för annotationProcessor. Version Glide 4.16+ fungerar stabilt med Android Gradle Plugin 8.x.
dependencies {
implementation "com.github.bumptech.glide:glide:4.16.0"
annotationProcessor "com.github.bumptech.glide:compiler:4.16.0"
}
// För Kotlin, använd kapt
// kapt "com.github.bumptech.glide:compiler:4.16.0"
AppGlideModule — en obligatorisk komponent för att konfigurera Glide. Den gör det möjligt att ställa in cachestorlek, anpassad HttpStack och registrera egna avkodare. Modulen skannas av Glide vid appstart. @GlideModule-annoteringen registrerar den automatiskt.
@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)
);
}
}
Exempel nedan visar typiska scenarier: ladda bild, arbeta med GIF och extrahera videoram.
Grundläggande laddning via Glide.with().load().into() — minimal kod för att visa en bild från nätverket. Glide justerar automatiskt ImageView-storleken. Placeholder visas under laddning och error vid fel.
Glide.with(fragment)
.load("https://example.com/photo.jpg")
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView)
GIF laddas som en statisk bild — Glide identifierar automatiskt formatet baserat på innehållstypen. För tvångsladdning som statisk bild använder du asBitmap(), för GIF — asGif(). Glide avkodar endast synliga bildrutor effektivt.
Glide.with(context)
.asGif()
.load("https://example.com/animation.gif")
.into(imageView)
// Ladda första bildrutan av GIF som statisk bild
Glide.with(context)
.asBitmap()
.load("https://example.com/animation.gif")
.into(imageView)
Videoram extraheras av Glide baserat på URI för lokal eller fjärrvideo. Som standard laddar Glide nyckelramen. För att ange en specifik tidsstämpel används frameMillis. Detta är praktiskt för att visa förhandsvisning i videogalleri.
String videoUrl = "https://example.com/video.mp4";
Glide.with(context)
.asBitmap()
.load(videoUrl)
.override(200, 200)
.into(imageView)
Optimering av Glide för RecyclerView — en kritisk färdighet vid utveckling av appar med många bilder. Korrekt konfiguration förhindrar fördröjningar och OOM-fel.
En av Glides viktigaste funktioner — integration med RecyclerView via RecyclerViewPreloader. Denna komponent analyserar scrollhastighet och rörelseriktning, och förladdar bilder som kommer att visas på skärmen om några element. För att arbeta med förladdaren måste man implementera PreloadSizeProvider-gränssnittet och skicka det till konstruktorn tillsammans med mål-ImageView.
Användning av metoden override() med exakta ImageView-mått påskyndar laddningen avsevärt. När Glide känner till det exakta måttet på målet kan det avkoda bilden direkt i önskad upplösning och hoppa över skalningssteget. Detta förkortar avkodningstiden och minskar toppminnesanvändningen med 30–40%.
För flöden med heterogent innehåll, använd olika RequestOptions för varje elementtyp. Till exempel för stora bannerbilder kan man ställa in override(1200, 600) och RGB_565-kvalitet, och för avatarer — override(200, 200) och avrundning via transform. Detta tillvägagångssätt möjliggör optimal användning av resurser för varje innehållstyp.
Glide tillhandahåller flexibla möjligheter för felhantering via error-bilder och anpassad RequestListener. RequestListener gör det möjligt att reagera på lyckad laddning eller fel, logga fel eller skicka analysdata. Man kan också konfigurera en fallback — en bild som visas när load() får null istället för en länk.
Använd RecyclerViewPreloader för att förladda bilder innan användaren scrollar till dem. Glide stöder integration med RecyclerView via en förladdare som analyserar scrollhastigheten och laddar bilder i förväg.
Thumbnail-multiplicering gör att man först kan visa en förminskad version av bilden och sedan ladda den fulla. Anrop thumbnail(0.25f) laddar en version som är 25% av storleken, som visas omedelbart, medan den fullstora bilden laddas senare. Detta skapar en känsla av omedelbar laddning.
För listadaptrar använder du .override() med exakta ImageView-mått så att Glide inte skalar bilden varje gång. Detta minskar CPU-belastningen och minnesförbrukningen. Cachestorleken väljs experimentellt, men 250 MB för disk och 20% av tillgängligt minne är en bra utgångspunkt.
Vanliga frågor
Glide stöder GIF, videoramar och animerade WebP. Det hanterar minnet mer effektivt och rekommenderas av Google. Picasso är mindre och enklare att använda. För komplexa projekt, välj Glide.
Glide accepterar LifecycleOwner (Fragment, Activity) eller View. Biblioteket övervakar automatiskt tillståndet via LifecycleObserver: pausar laddning vid paus och avbryter vid förstöring, vilket förhindrar läckor.
Ja, använd asBitmap() före load(). Glide laddar GIF som en statisk bild och visar bara den första bildrutan. Detta är användbart för listor där GIF-animation är oönskad på grund av prestanda.
Cachen i Glide består av tre nivåer: aktiva resurser (för närvarande använda), RAM (LRU-cache) och disk (LruCache). Bilder som laddats från cachen visas omedelbart. Cachen rensas automatiskt vid minnesbrist.
Anpassad HTTP-klient registreras via OkHttpUrlLoader i AppGlideModule. Skriv över registerComponents och registrera din egen OkHttpClient. Detta gör det möjligt att lägga till interceptorer, certifikat och anpassade timeout.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också