İlk Android Uygulaması başlıklı yazımızda yeni bir Android projesi yaratarak, uygulama için konfigürasyon oluşturmuş ve nasıl çalıştırılıp/debug edileceğini incelemiştik. Bu yazımızda ise kaynak kodu ve bileşenleri incelemeye çalışacağız. İlk olarak Aktivite sınıfını anlamaya çalışarak başlayalım. Aktiviteler aracılığı ile kullanıcılara bilgiler/ekranlar gösterilir ve kullanıcı tepkilerine cevap üretilir. Aktivite temel olarak kaynak kodundan (.java dosyası) ve ara yüz tasarımından (.xml dosyası) oluşur. İlk olarak Tablo 1’deki kaynak kodunu inceleyelim. Oluşturduğumuz MainActivity sınıfı, temel Activity sınıfını extend etmiş ve OnCreate metodunu ezmiştir. Aktivite yaratılması esnasında aynı zamanda çağrılmaktadır.
Tablo 1.MainActivity.java kaynak kodu |
Android uygulamalarında ara yüz tasarımları View ve ViewGroup kontrolleri ile oluşturulurlar. View’lar button, text field, checkbox gibi kontrolleri ifade ederken, ViewGroup’lar ise bu kontrolleri taşıyan görünmez kontrollerdir (inivisible containers). Bir ViewGroup başka bir ViewGroup’u hiyerarşik olarak barındırabilir (Resim 1).
Resim 1. ViewGroup kontrollerinin hiyerarşik gösterimi
Eclipse ortamında proje kaynakları hiyerarşik olarak drawable, layout ve values klasörlerini içeren res klasöründe yer almaktadırlar. View ve ViewGroup’larını barındıran ara yüz tasarımları da res/layout dizini altında XML dosya formatında bulunmaktadır. Tablo 2’de oluşturduğumuz varsayılan ara yüzün XML kaynak kodu yer almaktadır. Kullanıcı ara yüzünü XML olarak tanımlamak uygulama katmanı ile kullanıcı ara birimi katmanını birbirinden ayırmanıza yardımcı olur.
Tablo 2.activity_main.xml kaynak kodu |
Tablo 1’de görüleceği üzere uygulamamız bir tane ViewGroup ve onun içerisinde bir tane View kontrolünden oluşmaktadır. Tüm kontrollerin XML dosyasında yer alan çeşitli özellikleri (attributes) bulunmaktadır. TextView kontrolümüzün özellikleri aşağıdaki gibidir;
android:id | Kod içerisinden kontrollere ulaşmak ve onlar işlem yapmak için kullanılan özelliktir. @ işareti XML içerisindeki herhangi bir kaynağa ulaşmak için kullanılır. Sonrasında kaynak türünün adı olan id gelir. Son olarak da kontrolün benzeşiz ismi textView1 gelmektedir. Uygulama ilk defa derlendiğinde projenin gen klasörü altındaki R.java dosyasındaki R sınıfının id alt sınıfında textView1 isimli değişken yaratılmış olur. |
android:layout_widthandroid:layout_height | Kontrolün genişlik ve yükseklik değerini barındıran özelliktir. wrap_content değeri kontrolün ara yüz içeriğinin gerektirdiği kadar yer kaplayacağını belirtmektedir. |
android:text | Kontrolün içeriğine yazılarak kullanıcıya gösterilecek yazıdır. string/hello_world değeri res/values klasörü altındaki strings.xml dosyasındaki hello_world değişkenin değerinin alınacağı anlamına gelmektedir. Tablo 3’de strings.xml dosyasının kaynak kodu görülmektedir. |
Tablo 3.strings.xml kaynak kodu |
Uygulamayı biraz daha geliştirerek kod içerisinden textView1 kontrolüne erişip mevcut metin değeri olan yani üzerinde yazan “Hello World!” değerini “Metin değişti!” olarak nasıl değiştireceğimize bakalım. Öncelikle Tablo 4’de de görülen overrideTextAttribute isimli bir metot yazalım. Metot içerisinde findViewById fonksiyonu kullanılarak textView1 kontrolüne erişilmiş ve kontrolün referansı objMyView nesnesine atanmıştır. Kontrolün setText fonksiyonu kullanılarak metin değeri değiştirilmiştir. Son olarak yazdığımız overrideTextAttribute metodu Aktivitenin onCreate metodundan çağrılarak kodlamamız tamamlanmış olur.
Tablo 4.Değiştirilmiş MainActivity.java kaynak kodu |
Hello World uygulaması tekrar çalıştırıldığında emülatörde ana aktivite artık Resim 2’deki gibi görülecektir.
Resim 2. ViewGroup kontrollerinin hiyerarşik gösterimi
Deniz KILINÇ