Kotlin — Android Glide Kullanımı Part — 1

Ekrem Hatipoglu
5 min readApr 14, 2018

--

Bu yazı neler içeriyor ?

Güncellenecektir….

Glide nedir ?

Glide Android işletim sistemi için Bump Technologies tarafından geliştirilmiş resim, gif ve yerel video’ları kolayca uygulamamıza dahil etmek, memory ve disk cache gibi olayları düşünmeden hızlıca uygulama geliştirmek için geliştirilmiş açık kaynak bir kütüphanedir.

Picasso, Universal Image Loader ve Fresco Glide ile aynı işi yapan diğer açık kaynak kütüphanelerdir.

Picasso-UImageLoader-Glide-Fresco Karşılaştırması

Glide hakkında daha çok bilgi için buraya tıklayın.

Glide Kütüphanesi Projeye Nasıl Dahil Edilir?

Module düzeyinde build.gradle dosyasına giderek dependencies bölümüne aşağıdaki satırlar eklendikten sonra sağ üst bölümde çıkan Sync Now yazısına tıklayarak projemize Glide kütüphanesini başarılı bir şekilde ekleyebiliriz.

implementation 'com.github.bumptech.glide:glide:4.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1'

Not : Bu yazı yazılırken Glide kütüphanesinin son stable versiyonu 4.6.1 idi. Siz buraya tıklayarak güncel sürümü projenize dahil edebilirsiniz.

Bu işlemin ardından AndroidManifest.xml dosyasına giderek cihazdan INTERNET izni almamız gerekmektedir.

Aşağıdaki kod parçası eklenerek bu işlem gerçekleştirilebilir.

<uses-permission android:name="android.permission.INTERNET"/>

Glide Kütüphanesi ile Resim, GIF ve Video’larla Çalışmak

Glide kütüphanesi bir Design Pattern olan Fluent Interface yapısını kullanır. Fluent “akıcı” anlamına gelir. Fluent Interface belli başlı durumlarda daha akıcı kod yazmamızı sağlayan bir tasarım desenidir.

Glide Builder ‘ ı tam fonksiyonel bir istek için 3 parametreye ihtiyaç duyar. Bunlar ;

  • with( context ) : Parametre olarak bizden bir Activity yada Fragment nesnesi beklemektedir.
  • load( resorcues ) : Parametre olarak bizden bir kaynak beklemektedir. Bu kaynak resim url’i,bir dosya içi, projenin içinde bulunan bir kaynak( Örn : R.drawable.icon ) yada bir Uri olabilir.
  • into( target ) : Parametre olarak bizden load’ta belirtilen içeriğin gösterileceği bir hedef beklemektedir. ( Örn : ImageView )

URL’den ( Internet Adresinden ) Resim Yüklemek

Örnek Çalışma

Örnek olarak yapacağımız uygulamada amaç ImageView’in üzerine tıklandığında Glide yardımıyla verdiğimiz URL’deki resmin ImageView’de gösterilmesidir.

val URL = "https://zeroturnaround.com/wdasdp-content/uploads/2015/09/java-android.jpg"imageView.setOnClickListener{
Glide.with(this).load(URL).into(imageView)
}

Hepsi bu kadar. Tek satır kod ile internetten çok kolay bir şekilde resim çekebilirsiniz. Eğer verdiğiniz verdiğiniz URL hatalı ise uygulama çökmez sadece ImageView’de hiçbir şey gözükmez.

Projeden Bir Resim Yüklemek

Örnek olarak yapacağımız uygulamada amaç ImageView’in üzerine tıklandığında Glide yardımıyla projemizin drawable klasöründe bulunan bir resmin ImageView’de gösterilmesidir.

imageView.setOnClickListener{
Glide.with(this).load(R.drawable.android_logo).into(imageView)
}

Dosyadan Bir Resim Yüklemek

Örnek olarak yapacağımız uygulamada amaç ImageView’in üzerine tıklandığında Glide yardımıyla cihazımızın Download klasöründe bulunan bir resmin ImageView’de gösterilmesidir.

Öncelikle depolama alanını kullanmak için AndroidManifest.xml dosyasına giderek izin almamız gerekmektedir. ( API 23 ve üzeri cihazlarda denerken cihazdan uygulama ayarlarına giderek Depolama izni vermeniz gerekmektedir. )

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Bu işlemi hallettikten sonra kod yazmaya başlayabiliriz.

val file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"car.jpg")
imageView.setOnClickListener{
Glide.with(this).load(file).into(imageView)
}

Not : Eğer Download klasöründe “car.jpg” adında bir resminiz yoksa uygulamanızın ImageView’i tıklandıktan sonra boş gözükecektir.

Uri’den Bir Resim Yüklemek

URI ( Uniform Resource Identifier ) : URL’den daha genel bir kavramdır. URI bir “kaynağı” ( resource ) belirtmek için kullanılan karakterler dizisi ( string ) olarak tanımlanabilir. Aşağıdaki gibi bir formatı vardır:

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

Örnek olarak yapacağımız uygulamada amaç ImageView’in üzerine tıklandığında Glide yardımıyla Uri kullanarak projemizin drawable klasöründe bulunan bir resmin ImageView’de gösterilmesidir.

val uri=Uri.parse("android.resource://"+applicationContext.packageName +"/"+R.drawable.android_logo)
imageView.setOnClickListener{
Glide.with(this).load(uri).into(imageView)

}

Glide ile Gif Oynatmak ve Video Görüntüsünü Göstermek

Bu bölümde çoğu resim kütüphanesinde olmayan Gif oynatmayı ve yerel videolardan görüntü göstermeyi öğreneceğiz. Aslında internetten resim çekmeyle bir farkı yok load metodunun parametresine gif’imizin URL’ini vermemiz yeterlidir.

Örnek olarak yapacağımız uygulamada amaç ImageView’in üzerine tıklandığında Glide yardımıyla verdiğimiz URL’deki gif’in ImageView’de gösterilmesidir.

val URL ="https://upload.wikimedia.org/wikipedia/commons/4/43/Animation-battery_Android_8.gif"
imageView.setOnClickListener{
Glide.with(this).load(URL).into(imageView)
}

Gif’imiz ImageView’e yüklendiği anda otomatik olarak başlar.

Bunların dışında Glide’ın bize sunduğu birkaç güzel özellik daha var. Örneğin placeholder metodunu kullanarak istenilen resim yüklenene kadar başka bir resim göstebiliyoruz yada resmimiz bulunamadığında, bir hata ile karşılaşıldığında error metodunu kullanarak ImageView’de bir hata resmi gösterebiliyoruz.

val URL ="https://upload.wikimedia.org/wikipedia/commons/4/43/Animation-battery_Android_8.gif"
imageView.setOnClickListener{
val options = RequestOptions().placeholder(R.drawable.loading).error(R.drawable.error)
Glide.with(this)
.load(URL)
.apply(options)
.into(imageView)
}

Not : URL kısmına hatalı bir adres girerseniz error resmini görebilirsiniz.

URL adresinden bir resmin Gif mi yoksa resim mi olduğunu anlayabiliriz. Bunun için aşağıdaki fonksiyonlar kullanılır.

  • asGif() : Eğer URL adresi yanlış ise ekranda götermez. Eğer
  • asBitmap() : Eğer URL adresi resim değilse ekranda götermez. Gif ise bu Gif’in ilk görüntüsünü gösterir.
val URL ="https://upload.wikimedia.org/wikipedia/commons/4/43/Animation-battery_Android_8.gif"
imageView.setOnClickListener{
val options = RequestOptions().placeholder(R.drawable.loading).error(R.drawable.error)
Glide.with(this)
.asGif() // yada asBitmap()
.load(URL)
.apply(options)
.into(imageView)
}

Şimdi Glide kullanarak yerel video’dan görüntü almayı öğreneceğiz.

Örnek olarak yapacağımız uygulamada amaç ImageView’in üzerine tıklandığında Glide yardımıyla cihazımızın Download klasöründe bulunan bir video ilk görüntüsünün ImageView’de gösterilmesidir.

Öncelikle depolama alanını kullanmak için AndroidManifest.xml dosyasına giderek izin almamız gerekmektedir. ( API 23 ve üzeri cihazlarda denerken cihazdan uygulama ayarlarına giderek Depolama izni vermeniz gerekmektedir. )

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Bu işlemi hallettikten sonra kod yazmaya başlayabiliriz.

val file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"test.mp4")
imageView.setOnClickListener{
Glide.with(this)
.load(Uri.fromFile(file))
.into(imageView)
}

Not : Eğer Download klasöründe “test.mp4” adında bir videonuz yoksa uygulamanızın ImageView’i tıklandıktan sonra boş gözükecektir.

Not-2 : Bu özellik sadece cihazda bulunan video’larda çalışır yani bir URL adresindeki video’nun görüntüsünü çekemezsiniz.

Bilgilendirici Not : Eğer cihazdan yada bir URL adresinden video oynatmak isterseniz VideoView kullanmalısınız.

Sonuç

Hepsi bu kadar. Bu yazıda, Glide kütüphanesinin ne işe yaradığını ve Glide kütüphanesini kullanarak uygulamamızda resim, gif ve video görüntülerini nasıl gösterileceğini öğrendiniz.

Okuduğunuz için teşekkürler.

--

--