Android

XML2Class ile Aktivite Sınıfını Otomatik Oluşturma

Öncelikle yazıma eylül ayında bir sosyal sorumluluk projesi olarak başlayan ve dört ay gibi kısa bir sürede 10.000’i aşkın üye sayısına ulaşarak, bilişim sektörünün Geleceği Yazanlar’ına fayda sağlamayı hedefleyen Turkcell ve Geleceği Yazanlar ailesine teşekk&uum...

Göksel Güren |

27.02.2014

 

Öncelikle yazıma eylül ayında bir sosyal sorumluluk projesi olarak başlayan ve dört ay gibi kısa bir sürede 10.000’i aşkın üye sayısına ulaşarak, bilişim sektörünün Geleceği Yazanlar’ına fayda sağlamayı hedefleyen Turkcell ve Geleceği Yazanlar ailesine teşekkür ederek başlamak istiyorum. Bizlere bu platform üzerinden daha geniş bir kitleye hitap edebilme olanağı sağladığınız için teşekkürler.

Sizlere bu yazımda geliştirmiş olduğumuz XML2Class aracılığıyla, Android uygulamanızın ekranlarını oluşturduğunuz layout dosyalarını, birkaç adımda Aktivite sınıflarına nasıl dönüştürebileceğinizden bahsedeceğim. XML2Class aracını, sürekli tekrar eden bazı işlemleri minimuma indirerek zaman tasarrufu sağlayabilmek ve aynı şeyleri yapıyor olmanın ortaya çıkardığı motivasyon kaybını azaltabilmek için geliştirdik.

Yazılım geliştiriciler olarak uygulama geliştirme sürecinde aynı şeyleri tekrar tekrar yapmayı genelde sevmeyiz. Mesela benim karşıma her Custom ListView oluşturulması gereken bir ekran geldiğinde nedense bir kalkıp çay koyma, sosyal ağları kontrol etme isteği oluşur. Çünkü yine ListView rowlarını temsil etmek için bir layout dosyası, bir custom adapter ve aktivite sınıfında bunları kullanmam için gereken kod bloklarını yazmam gerekir. Bu işlemleri tekrar tekrar yapıyor olmak ise geliştirme sürecimin keyifsiz geçmesine neden olur.

Android uygulama geliştirme sürecimizi biraz daha keyiflendirebilmek için kullanabileceğimiz XML2Class aracı ne işe yarar?

  • Layout dosyanızda tanımlamış olduğunuz view'lara erişim için belirtilmiş resource id'lerini kullanarak bunların otomatik olarak değişkenlerini oluşturur. 
  • Oluşturulmuş değişkenler kullanılarak, istenen view'lara onClickListener ekleyerek, onClick aksiyonunun dinlenebilmesini sağlar.
  • Belirteceğiniz fontlar içerisinden seçeceğiniz herhangi birisini view'ınıza otomatik ayarlayabilmenize olanak sağlar.
  • Üretilecek çıktının aktivite sınıfı yazım standardınıza uygun olabilmesi için çıktı şablonunu düzenleyebilmenize olanak tanır. 

Görsellerle destekleyerek XML2Class'a biraz daha yakından bakalım;

Anlatım için projelerimizden view hiyerarşisi dallı budaklı olan bir layout dosyası seçiyoruz.

Resimde sol tarafta layout dosyamızın içeriği, sağ tarafta ise bu dosyamızın içerdiği view'ları daha soyut bir şekilde görebilmemiz için Eclipse IDE’nin bize sunmuş olduğu dosya taslağı bulunmaktadır. Layout dosyamız farklı türlerde birçok view elemanı içeriyor. Bildiğiniz gibi bu view elemanları üzerinde işlem yapabilmek için bunları değişkenlere atayarak erişim sağlamamız gerekiyor. Bu kadar çok view elemanı içeren bir layout dosyası için bu işlem gerçekten uzun ve yorucu bir işlem. Bu işlemi XML2Class'ı kullanarak otomatikleştirmek için ilk adımımızda layout dosyamızın içeriğini aracımıza girdi olarak veriyoruz.

Android uygulamamızda sistemin belirlediği öntanımlı fontları kullanmak istemiyorsak, istediğimiz fontları kullanabilmek için, projemizin /assets/fonts dizinine kullanmak istediğimiz font dosyalarını koyarak bunları da bir değişkene alarak ilgili view elemanımıza ayarlamamız gerekir. TextView, Edittext, Button gibi built-in view elemanlarına, üst sınıf fonksiyonlarından olan setTypeface() ile custom font atanabilir. XML2Class aracımızın 2. adımı bu işlemi otomatikleştirebilmek içindir. Aktivite sınıfımızda kullanılacak custom fontların, projedeki pathini ve değişken isimlerini belirterek bu fontları sonraki adımda view elemanlarına ayarlayabilirsiniz. Tabi çoğu zaman bu fontları aktivite sınıflarımızı türeteceğimiz bir temel sınıfta tanımlamak veya ilgili view elemanından bir custom view türeterek otomatik olarak view elemanının bu custom font ile başlatılmasını sağlamak daha etkili bir çözüm olabilir.

Uygulamamızda genelde view elemanlarımızı tıklama aksiyonu için dinlemek isteriz. Birçok view elemanımızı dinlemek için onClickListener'lar tanımladığımızda Aktivite sınıfımız epey karmaşık bir hâle gelir. Bu adım, aktivite sınıfımızın belirttiğim sebeple karmaşık hâle gelmesini minimum seviyeye indirebilmek için view elemanlarımıza onClickListenerların bir fonksiyon ile eklenmesine ve aksiyonlarının alınması için otomatik üretilen bir switch-case yapısı oluşturulmasına yardımcı olur. 3. adımımızın ekran görüntüsü alttaki gibidir. İstediğiniz view elemanlarına onClickListener ekleyebilir ve 2. adımda tanımlamış olduğunuz fontları ayarlayabilirsiniz.

Her yazılım geliştiricinin genelde takip ettiği bir kod yazım standardı vardır. Bu standartları takip etmek projelerin daha sürdürülebilir ve performanslı olması için gerçekten çok önemlidir. Bu standartlar genelde uzun süre kod yazdıktan sonra ortaya çıkan tecrübelerle oluşur. Bu sebeple tekerleği tekrar keşfetmek yerine var olan standarlara adapte olmak bana daha mantıklı geliyor.

Örnek olarak şu bağlantıyı inceleyebilirsiniz: http://source.android.com/source/code-style.html

Eğer sizin de kendinize özel standartlarınız varsa XML2Class aracımızın son adımı sizin için. Karşınıza çıkacak şablon size otomatik üretilecek kodların nerelere geleceğini belirtmektedir. Bu şablonu kendi standartlarınıza göre düzenleyebilirsiniz. 

Artık Aktivite sınıfının oluşturulma zamanı. XML2Class belirttiğimiz değerlere göre bize alttaki blokları içeren sınıfı sunacaktır. Layout dosyamızdan elde edilen View değişkenleri ve tanımladığımız fontlar global değişkenler olarak üretilecektir.

onCreate fonksiyonunda font değişkenleri referanslarına bağlanacak ve findViews(), setFonts(), setListeners olmak üzere 3 fonksiyon çağrılacaktır. Bunların ne işe yaradığını da alttaki resimlerle inceleyelim.

FindViews() fonksiyonu view değişkenlerimizi layout dosyamızda tanımladığımız id’lere bağlayarak, referanslarını tanımlayacaktır.

setFonts fonksiyonu 3. adımda seçmiş olduğumuz custom font değişkenlerini view elemanlarımıza ayarlar.

setListeners() fonksiyonu 3. adımda belirtmiş olduğumuz view elemanlarına onClickListenerlarını ayarlar.

onClick fonksiyonu ise, dinleyicileri tanımlanmış view elemanlarının aksiyonlarının dinlenebilmesi için switch-case bloguyla hazır hâle getirilir.

XML2Class sınıfının ortaya çıkmasına sebep olan layout dosyası her ne kadar örneğimizde kullandığımız dosya olmasa da, bunda da kullanmak çok keyifliydi, yoksa yazarken saç baş yoldurabilirdi. Sabırla okuduğunuz için teşekkürler.

XML2Class aracını daha verimli ve kullanışlı bir hâle getirmek için geri bildirimleriniz gerçekten çok değerli. Sizce hangi işlevlerin eklenmesi daha fazla vakit tasarrufu yapabilmemize ve motivasyonumuzu artırabilmemize yardımcı olur?

Göksel Güren |

27.02.2014

Yorumlar

Geleceği Yazanlar Kullanıcısı
28.01.2018 - 11:24

1 ekran görüntüleri karınca gibi normalitede internetde virüslü damgası yer.

Gorkem Karadogan
11.04.2014 - 06:08

Şimdi test amaçlı bir layoutu denedim mükemmel çalışıyor çok başarılı bir proje olmuş

Oğuz
27.02.2014 - 09:56

Gerçekten oldukça yararlı bir araçmış.Detaylı anlatımınız için teşekkür ederim hepimizin işine yarayacağı kesin :)