Glide: nedir, görsel kütüphanesi ve Android'de kullanımı

Yazar: IT Sectr Yayınlanma: 2026-05-05 Okuma süresi: 8 dk

Glide, Bumptech projesi aracılığıyla Google tarafından desteklenen, Android'de görsel yüklemek için bir kütüphanedir. Kütüphane, otomatik bellek yönetimi ile görsellerin, GIF animasyonlarının ve video karelerinin verimli bir şekilde yüklenmesini sağlar. Glide GitHub deposuna göre, proje 200.000'den fazla uygulama tarafından kullanılmaktadır. Glide, Google tarafından Android'de grafik yüklemek için tercih edilen kütüphane olarak önerilmektedir.

Önemli Noktalar

  • Glide — GIF ve video karesi desteği ile Google'ın görsel yükleme kütüphanesi
  • Önbelleğe alma üç seviyede: bellek, disk ve aktif kaynaklar maksimum hız için
  • Yaşam döngüsü — Glide, Activity duraklatıldığında istekleri otomatik olarak duraklatır
  • GIF ve animasyonlu WebP ek eklenti olmadan desteklenir
  • Thumbnail önce küçültülmüş sürümü, ardından tam sürümü göstermeye olanak tanır

Glide nedir?

Glide, Android uygulamalarında görsellerin, animasyonlu GIF'lerin ve video karelerinin hızlı ve verimli bir şekilde yüklenmesi için bir kütüphanedir. Proje, Google himayesinde Bumptech tarafından geliştirilmekte ve Google'ın resmi uygulamalarında yaygın olarak kullanılmaktadır.

Glide'ın iç mimarisi bileşen tabanlı bir yaklaşım üzerine kurulmuştur: Engine istek yürütmeyi yönetir, DecodeJob kod çözmeden sorumludur ve ResourceDecoder ham veriyi Bitmap veya Drawable'a dönüştürür. Her aşama modüller ve kayıtlar aracılığıyla özelleştirilebilir ve bu da Glide'ı standart olmayan görsel formatları için son derece esnek bir kütüphane haline getirir.

Birçok rakibin aksine, Glide en başından itibaren Android'in özellikleri (Activity ve Fragment yaşam döngüsü, ekran dönüşleri, yapılandırma değişiklikleri) dikkate alınarak tasarlanmıştır. Kütüphane, bileşenin durumuna bağlı olarak yüklemeyi otomatik olarak duraklatır ve devam ettirir.

Android Developers'a göre Glide, Google'ın resmi belgelerinde görsel yükleme için önerilen kütüphanedir. Google Play, Google Maps ve şirketin diğer ürünlerinde kullanılarak güvenilirliğini ve performansını kanıtlamıştır.

Glide ve alternatifleri arasındaki temel fark, görsellerin ImageView boyutuna uyacak şekilde otomatik ölçeklenmesidir. Picasso görseli tam çözünürlükte yükleyip ardından ölçeklerken, Glide dosyayı doğrudan gerekli boyutta kod çözer. Bu, tepe bellek tüketimini azaltır ve farklı hücre boyutlarına sahip listelerde görüntülemeyi hızlandırır.

Glide'ın temel özellikleri

Glide, görsellerle çalışmak için hem basit hem de karmaşık içerik yükleme senaryolarını kapsayan geniş bir işlev yelpazesi sunar.

GIF ve animasyonlu WebP desteği

GIF ve animasyonlu WebP, Glide tarafından statik görseller kadar kolay yüklenir ve görüntülenir. Kütüphane, MIME türüne göre formatı otomatik olarak algılar ve animasyonu çözerek kareleri arka plan iş parçacığında görüntüler. Oynatma kontrolü için asGif ve asBitmap yöntemleri mevcuttur.

Yaşam döngüsü entegrasyonu

Glide, Activity, Fragment ve View'in yaşam döngüsüne otomatik olarak bağlanır. Bir Activity duraklatıldığında yüklemeler askıya alınır; yok edildiğinde iptal edilir. Bu, bellek sızıntılarını ve zaten kapatılmış ekranlar için görsel yüklenmesini önler. Entegrasyon, LifecycleOwner desteği ile çalışır.

Video karesi yükleme

Glide, URL veya yerel yol ile videodan kareler çıkarabilir. Video URI'leri için load() ile birlikte asBitmap() yöntemi kullanılır. Glide otomatik olarak bir ana kare veya belirtilen zaman damgasında bir kare seçer. Bu, video küçük resimlerini görüntülemek için kullanışlıdır.

GlideApp oluşturma ve yapılandırma

GlideApp, AppGlideModule yapılandırmasına dayalı genişletilmiş bir API sağlayan oluşturulmuş bir sınıftır. Standart Glide.with'de bulunmayan yöntemleri (özelleştirilmiş varsayılan seçeneklerle yükleme, kütüphanelerle entegrasyon ve ön ayarlı dönüşümler) kullanmaya olanak tanır. Oluşturma, AppGlideModule'ü genişleten bir sınıfta @GlideModule notu gerektirir.

Glide nasıl çalışır?

Glide, motor, kod çözücüler, dönüşümler ve önbellek ile çok katmanlı bir mimari kullanır. Her istek, belirli bir ImageView için yüklemeyi optimize eden bir işleyici zincirinden geçer.

Mimari ve işlem hattı

into(view) çağrıldığında, Glide önbelleği kontrol eder: aktif kaynaklar, bellek önbelleği, disk önbelleği ve ardından ağ. Görsel, ekran yoğunluğu ve scaleType dikkate alınarak hedef ImageView boyutuna otomatik olarak ölçeklenir. Bu, bellek kullanımını azaltır — Glide'ın önemli bir avantajıdır.

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

Glide kurulumu ve yapılandırması

Glide kurulumu Gradle aracılığıyla yapılır. Kütüphane, API oluşturma için AppGlideModule aracılığıyla yapılandırma gerektirir. Minimum Android API sürümü 21'dir.

Bağımlılıkları ekleme

build.gradle dosyasına, GlideApp API oluşturma için kapt not işlemcisi ile Glide'ı ekleyin. Kotlin için annotationProcessor yerine kapt kullanın. Glide sürüm 4.16+, Android Gradle Plugin 8.x ile kararlı bir şekilde çalışır.

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

// Kotlin için kapt kullanın
// kapt "com.github.bumptech.glide:compiler:4.16.0"

AppGlideModule oluşturma

AppGlideModule, Glide'ı yapılandırmak için zorunlu bir bileşendir. Önbellek boyutunu ayarlamaya, özel HttpStack ve özel kod çözücüler kaydetmeye olanak tanır. Modül, uygulama başlangıcında Glide tarafından taranır. @GlideModule notu onu otomatik olarak kaydeder.

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

Glide kullanım örnekleri

Aşağıdaki örnekler tipik senaryoları göstermektedir: görsel yükleme, GIF ile çalışma ve video karesi çıkarma.

Placeholder ile görsel yükleme

Glide.with().load().into() ile temel yükleme — ağdan bir görsel görüntülemek için minimum kod. Glide otomatik olarak ImageView boyutuna uyum sağlar. Yükleme sırasında placeholder, başarısızlık durumunda error gösterilir.

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)

GIF görseli yükleme

GIF, statik bir görselle aynı şekilde yüklenir — Glide, içerik türüne göre formatı otomatik olarak algılar. Statik görsel olarak zorla yüklemek için asBitmap() kullanın; GIF için asGif() kullanın. Glide yalnızca görünür kareleri verimli bir şekilde kod çözer.

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

// Bir GIF'in ilk karesini statik görsel olarak yükle
Glide.with(context)
    .asBitmap()
    .load("https://example.com/animation.gif")
    .into(imageView)

Video karesi yükleme

Bir video karesi, Glide tarafından yerel veya uzak bir video URI'sinden çıkarılır. Varsayılan olarak Glide ana kareyi yükler. Belirli bir zaman damgası belirtmek için frameMillis kullanın. Bu, bir video galerisinde önizleme göstermek için kullanışlıdır.

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

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

Büyük listeler için Glide optimizasyonu

Çok sayıda görsel içeren uygulamalar geliştirirken RecyclerView için Glide optimizasyonu kritik bir beceridir. Doğru yapılandırma gecikmeyi ve OOM hatalarını önler.

Glide'ın temel özelliklerinden biri, RecyclerViewPreloader aracılığıyla RecyclerView entegrasyonudur. Bu bileşen kaydırma hızını ve yönünü analiz eder, birkaç öğe içinde ekranda görünecek görselleri önceden yükler. Ön yükleyiciyi kullanmak için PreloadSizeProvider arayüzünü uygulamanız ve hedef ImageView ile birlikte yapıcıya iletmeniz gerekir.

Tam ImageView boyutlarıyla override() yöntemini kullanmak yüklemeyi önemli ölçüde hızlandırır. Glide hedefin tam boyutunu bildiğinde, ölçekleme adımını atlayarak görseli doğrudan gerekli çözünürlükte kod çözebilir. Bu, kod çözme süresini ve tepe bellek tüketimini %30–40 oranında azaltır.

Heterojen içerikli beslemeler için her öğe türü için farklı RequestOptions kullanın. Örneğin, büyük banner görselleri için override(1200, 600) ve RGB_565 kalitesi ayarlayabilirken, avatarlar için override(200, 200) ve transform aracılığıyla yuvarlama ayarlayabilirsiniz. Bu yaklaşım, her içerik türü için kaynakları en iyi şekilde kullanır.

Hata yönetimi

Glide, hata görselleri ve özel RequestListener aracılığıyla esnek hata yönetimi seçenekleri sunar. RequestListener, başarılı yükleme veya başarısızlığa tepki vermeye — hataları günlüğe kaydetmeye veya analiz göndermeye — olanak tanır. Ayrıca, load() bir URL yerine null aldığında gösterilen bir yedek görsel yapılandırabilirsiniz.

Kullanıcı onlara kaydırmadan önce görselleri önceden yüklemek için RecyclerViewPreloader kullanın. Glide, kaydırma hızını analiz eden ve görselleri önceden yükleyen bir ön yükleyici aracılığıyla RecyclerView entegrasyonunu destekler.

Thumbnail çarpanı, önce görselin küçültülmüş bir sürümünü göstermeye, ardından tam sürümü yüklemeye olanak tanır. thumbnail(0.25f) çağırmak, hemen görüntülenen %25 boyutunda bir sürüm yüklerken, tam boyutlu görsel daha sonra yüklenir. Bu, anında yükleme izlenimi yaratır.

Liste adaptörleri için, Glide'ın görseli her seferinde ölçeklememesi için tam ImageView boyutlarıyla .override() kullanın. Bu, CPU yükünü ve bellek tüketimini azaltır. Önbellek boyutu deneysel olarak seçilir, ancak disk için 250 MB ve kullanılabilir belleğin %20'si iyi bir başlangıç noktasıdır.

Sıkça sorulan sorular

Glide, Picasso'dan nasıl farklıdır?

Glide, GIF, video kareleri ve animasyonlu WebP'yi destekler. Belleği daha verimli yönetir ve Google tarafından önerilir. Picasso daha küçük boyutlu ve kullanımı daha basittir. Karmaşık projeler için Glide'ı seçin.

Glide yaşam döngüsüne nasıl bağlanır?

Glide, bir LifecycleOwner (Fragment, Activity) veya View kabul eder. Kütüphane, LifecycleObserver aracılığıyla durumu otomatik olarak izler: duraklatmada yüklemeyi askıya alır ve yok etmede iptal ederek sızıntıları önler.

Glide'da bir GIF'in yalnızca ilk karesini yükleyebilir miyim?

Evet, load()'dan önce asBitmap() kullanın. Glide, GIF'i statik bir görsel olarak yükleyecek ve yalnızca ilk kareyi gösterecektir. Bu, performans nedenleriyle GIF animasyonunun istenmediği listeler için kullanışlıdır.

Glide önbelleği performansı nasıl etkiler?

Glide önbelleği üç seviyeden oluşur: aktif kaynaklar (şu anda kullanımda), bellek (LRU önbelleği) ve disk (LruCache). Önbellekten yüklenen görseller anında görüntülenir. Bellek düşük olduğunda önbellek otomatik olarak temizlenir.

Glide için özel bir HTTP istemcisi nasıl yapılandırılır?

Özel bir HTTP istemcisi, AppGlideModule'da OkHttpUrlLoader aracılığıyla kaydedilir. registerComponents'i geçersiz kılın ve OkHttpClient'ınızı kaydedin. Bu, engelleyiciler, sertifikalar ve özel zaman aşımları eklemeye olanak tanır.

Özet

  • Glide — GIF ve video karesi desteği ile Google'ın görsel yükleme kütüphanesi
  • Üç seviyeli önbellek, tekrar yüklenen görsellere anında erişim sağlar
  • Yaşam döngüsü istekleri otomatik olarak duraklatır ve iptal eder
  • Video kareleri asBitmap ile yerel ve uzak videolardan çıkarılır
  • Thumbnail çarpanı listelerde görsel görüntülemeyi hızlandırır
  • Google önerisi Glide'ı Android uygulamaları için standart yapar
  • RecyclerViewPreloader kullanıcı kaydırmadan önce görselleri önceden yükler

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun