21 Haziran 2012 Perşembe

Android Kullanıcı Arayüzü 2.Bölüm- Layout'lar

Şu ana kadar android uygulamalarının en basit birimi olan aktiviteleri gördünüz. Aktiviteler, uygulamanın textbox, buttons vs. gibi widget'lara sahip olan arayüzlerini görüntülerler. Hesap makinesi örneğinde Aktivitenizin onCreate metodunda görmüş olduğunuz


metod aktivitenizin kullanıcı arayüzünü görüntülemesini sağlayan metodudur.Android'de kullanıcı arayüzleri klasik masaüstü veya web uygulamalarına nazaran xml kullanılarak hazırlanırlar. Arayüz kütüphanesi biraz geniş olduğu için bir kaç yazıya böldüm ve bu yazımda sadece layoutlara odaklanmak istiyorum.

Layouts

Layoutlar arayüz için kontrolleri yerleştirmenize yarayan ViewGroup sınıfından türetilmişlerdir. Layoutları iç içe kullanabildiğiniz gibi bunların değişik kombinasyonları ile karmaşık arayüzler oluşturabilirsiniz.

Android SDK arayüz tasarımı için bazı hazır basit layoutlar içermektedir.

  • FrameLayout: En basit layouttur ve tüm view'ları sol üst köşeye yerleştirir. Birden fazla view eklendiğinde her zaman son eklenen view bir öncekini görünmez yapar.
  • LinearLayout: İçerisine yerleştirilen view'ları yatay veya dikey olarak yerleştirir. 
  • RelativeLayout:Esnek bir layouttur ve alt view'larınızı ekran sınırlarına veya diğer viewlara bağlı olarak viewlarınızın pozisyonunu belirlemenize imkan sağlar.
  • TableLayout:Adındanda anlaşılabileceği gibi satır ve sütunlar kullanarak viewlarınızı yerleştirmenizi sağlar.
  • Gallery:Gallery layoutu tek satırlık bir içeriği yatay olarak görüntülemeye yardımcı olur.
Bunlara ek olarak RelativeLayout'a benzer  olan AbsoluteLayout bulunmaktadır. AbsoluteLayout'ta kullanacağınızın bir view'ın x ve y koordinatlarını kesin olarak belirtmeniz gerekir. Kullanımı zor olduğundan çok fazla tercih edilmezler. AbsoluteLayout'ların yerine RelativeLayout kullanabilirsiniz.

Layoutların Kullanımı

Yukarıda da bahsettiğim gibi android kullanıcı arayüzleri XML kullanılarak oluşturulurlar. Şimdi basit bir LinearLayout kullanımını görelim.



LinearLayout tag'ının içerisinde yer alan layout_width ve layout_height layoutunuzun ekran boyutlarını belirlemenize yarar. Rakamsal değer alabileceği gibi hazır değerlerde alabilmektedirler. Ekran boyutlarındaki değişkenlikten dolayı rakamsal değerler kullanmak fazla tercih edilmektedir. Hazır değerlere ise;
  • fill_parent: Bir üst layout'u tamamen doldurur. Eğer layout'unuz en üstteki layout ise ekranı kaplar
  • match_parent:fill_parent'în API level 8'den sonraki adıdır. Kısaca ikisi aynıdır.
  • wrap_content:Layout'unuzun kullandığınız view kadar büyük olmasını belirtir.
Son olarakta yine LinearLayout tagında gördüğünüz orientation ise LinearLayout'unuzun dikey veya yatay konumunu gösterir. Alabileceği iki değer bulunur vertical ve horizontal.

Son olarak'ta tagları arasında yer alan ve tagları ise sizin layout içerisine yerleştirmiş olduğunuz Viewlarınızdır.

Şimdi ise gelelim layout'ları nasıl kullanmanız gerektiğine. Layout'ları aktiviteleriniz içerisinde kullanmak gerçekten zorlayıcı bir süreç olduğu gibi yanlış tasarımlar uygulamanızda performans kaybı ve çalışma zamanı hatalarına sebep olabilirler. Bu yüzden layoutları kullanırken dikkat etmeniz gereken bazı noktalar mevcuttur.

  • Gereksiz layout kullanımından her zaman kaçının. Örneğin ikiside match_parent olarak ayarlanmış iç içe iki layout kullanmanız gereksiz olacaktır.
  • Çok fazla View kullanımından kaçının. Kullandığınız her view arayüzün görüntülenme süresini uzatıcaktır.
  • İç içe plan oluşturmamaya çalışın. Örneğin yatay bir linearlayout içerisinde dikey bir linearlayout kullanmak yerine relativelayout tercih edebilirsiniz.
  • Android SDK layoutopt komut satırı aracını bulundurmaktadır. Bu arada layout kaynağını belittiğinizde bu araç sizin için layoutu analiz ederek geliştirmeler için önerilerde bulundurur. Aynı zamanda Eclipse üzerindeki Lint size arayüz oluştururken önerilerde bulunacaktır, bunlara dikkat etmeniz sizin yararınıza olacaktır.
Android layout'ları bu kadardır. Bir sonraki yazımda View oluşturma ve bunları nasıl kişiselleştireceğinizden bahsedeceğim.


Hiç yorum yok:

Yorum Gönder