Android ve GIF

Android yazmaya ilk baÅŸladığım zamanlarda, bir projemde tasarımcının yaptığı yükleniyor GIF’ını oynatmam gerekiyordu. İlk düşündüğümde, biÅŸey yok ya demiÅŸtim hallederiz hemen. Alt tarafı bir ImageView koyup kaynak dosyası olarak GIF kaynağımı gösterecektim. Ne de olsa web projesi geliÅŸtirirken tek yapmam gereken buydu. Tabi sonucu hayal kırıklığı oldu. Bu yazımda benim o zamandan beri kullandığım tekniÄŸi anlatacağım. Internette biraz araÅŸtırma yaptım insanlar GIF için ayrı View’ler yazma yoluna falan da gitmiÅŸ. Hala en basit yolun bu olduÄŸnu düşünüyorum.

loading

Benim ilk karşılaÅŸtığım örneÄŸi yapacağım, bir “loading.gif” dosyasını android cihazda hareket ettireceÄŸiz. Bunun için ihtiyacımız olan ilk ÅŸey tabi ki de Loading.gif dosyası. Bunun için benim kullandığım ilk loading.gif dosyasını bulmaya çalıştım fakat bulamadım. Bu sebepten google’da yaptığım bir aramanın sonucunu kullanacağım. GIF dosyasını hemen saÄŸ tarafınızda görebilirsiniz.

GIF Dosyasının Hazırlanması

SaÄŸ taraftaki gif dosyanızı bilgisayarınıza indirin. Åžimdi yapmamız gereken bu GIF dosyasını oluÅŸturan FRAME’leri çıkarmak. Bunun için Photoshop ya da benzeri bir program kullanabilirsiniz. Ben Photoshop’a lisans ücreti vermeye gerek görmüyorum. Hatta çoÄŸunluka o büyüklükte bir resim iÅŸleme programına dahi ihtiyacım olmuyor. Böyle ihtiyacım olan ender durumlarda ise pixlr editor kullanıyorum.

Hemen hemen tüm iÅŸlemlerde pixlr editor beni tatmin etse de GIF dosyasını FRAME’lere ayırma iÅŸleminde sınıfta kalıyor. Bu sebepten bende baÅŸka bir site üzerinden GIF dosyasını FRAME’lerine ayırıyorum. Fakat gelin görün ki bu site de her bir FRAME’i yine GIF formatında dönüyor. Benim ihtiyacım olan PNG ya da JPG formatında resimler. Bunun için oturup tüm frame’leri tek tek PNG formatına çeviriyorum.

EÄŸer tüm bu iÅŸlemlerden kaçınmak ve bu tutorial’a devam etmek istiyorsanız FRAME’lerin PNG formatındaki hallerine buradan ulaÅŸabilirsiniz.

Projenin Olusturulması

Tahmin edeceğiniz üzere bu örneğimizi yine Eclipse üzerinden yapıyoruz.

Eclipse üzerinden Android Application Project yaratıyoruz. Yaratırken aşağıdaki değerleri kullanıyorum.

  • Application Name: AndroidLoading
  • Project Name:   AndroidLoading
  • Package Name:  com.bahadirakin.gif
  • Minimum Required SDK: API 8
  • Target SDK: API 18
  • Compile With: API 18
  • Theme: None

Projemiz yaratılırken Eclipse bize boÅŸ bir activity’de yaratıyor. Projemiz içerisinde sadece loading hareketli resmini göstereceÄŸimizi düşünecek olursak, bu bize yeter de artar bile.

Projenizi oluÅŸturduktan sonra kendinizin oluÅŸturduÄŸu ya da benim linkini verdiÄŸim RAR dosyasından çıkan tüm FRAME’leri (ki toplam 12 tane olması örnek GIF dosyasıyla ilgilidir) res/drawable-mdpi klasörüne atıyoruz. Bu örneÄŸimiz içerisinde Drawable klasörlerinden birine atmanız yeterli olacaktır.

Hareketlendirme

Åžimdi FRAME’lerimizi eklediÄŸimize göre hareketlendirmeye ve ImageView’imizi eklemeye baÅŸlayabiliriz. Bunun için yine drawable-mdpi klasörünün altına bir tane “Android Animation List” xml dosyası oluÅŸturuyoruz. Bunun için New -> Other -> Android XML File seçeneÄŸini seçtikten sonra gelen ekranı aÅŸağıdaki gibi dolduruyoruz.

android_animation_list

 

Burdan sonra finish dediÄŸimizde bize boÅŸ bir animation dosyası oluÅŸturacak. Bizim yapacağımız ise her bir FRAME’imizi bu dosyanın içine tanımlayıp, süreler vermek olacak. EÄŸer linkte’ki RAR dosyasının içerisindeki FRAME’lerden devam ediyorsanız son durumda aÅŸağıdaki gibi bir loading.xml dosyası elde edeceksiniz.

loading.xml

Loading animasyonumuzu oluÅŸturduÄŸumuza göre ÅŸimdi bunu bir ImageView’e baÄŸlayalım. Bunun için activity_main.xml dosyasını aÅŸağıdaki gibi güncelliyoruz.

activity_main.xml

Artık tek yapmamız gereken kod tarafında animasyonu başlatmak. Bunun için MainActivity sınıfı içerisini aşağıdaki gibi güncelliyoruz.

MainActivity.java

 Son

Uygulamanızı bir emulatorde ya da telefonda baÅŸlattığınızda GIF’inizin hareketlendiÄŸini göreceksiniz.

End Of Line