26 Ocak 2013 Cumartesi

Yeni Oyuncağım Android...

    Uzun zamandır Android ile uğraşmak istiyordum ama zaman bulamıyordum(Tembellik faktörü göz ardı edildiğinde :). Sonunda şirketin projesi için başlayabildim. Android programlama alt yapısı çok güzel hazırlanmış ve oldukça keyifli bir ortam. Özelle de Eclipse'in gelişmiş IDE Alt yapısı ile keyfini katlıyor. Bu arada uzun zamandır ihmal ettiğim Java'ya geri dönmeme vesile olduğu için kendilerine ayrıca teşekkür ediyorum.

    Android'i Anlamak
    Bir çok makaleden de okuduğunuz gibi Android programları Activity sınıfından türetilen sınıflardan oluşuyor. Bu yapı çok yabancı değil. Aynı C# programlamadaki Form sınıfları gibi. Activity içinde arayüzü dosyasını çağırarak görsel ara yüzünüzü oluşturuyorsunuz. Arayüz dosyaları res/Layout klasöründe saklanıyor ve xml biçiminde tasarlanıyor. xml form tasarımı daha sonradan Microsoft'un da SilverLight ve devamı olan WPF ile yöneldiği yeni nesil arayüz tasarım standardı. Java'da FX platformunda xml dilinin bir türevini kullanıyor.(Bir sonraki oyuncağım JavaFx olsa ne güzel olur) Tabi tüm bilgisayar dillerinin ve işletim sistemlerinin atası C'de geri kalmadı. C dili ile kolayca fırtınalar estirmenin kaynağı Qt alt yapısında görsel arayüz tasarımı için çok gelişmiş bir xml dil kullanıyor. Hatta o kadar gelişmiş ki bir butonun görünü web sayfası gibi html tasarlayıp css ile süsleyebilirsiniz. Dur be kafam nereye gittin yine.

     Android'in en güzel yönlerinden bir tanesi tüm string ifadeleri farklı bir xml dosya içinde saklıyor ve çok kolay yerleştirebiliyor olması.(Tamam bende biliyorum bunu diğerlerinin de yapabildiğini ama diğerleri zorlamıyor ki. Mecbur değilsem niye yapayım :) Android programlama sırasında Android işletim sistemiyle tam olarak bütünleşiyorsunuz. Bütünleşme ile ilgili en önemli kısım izinler.

    Android ve izinleri
    Windows sisteminin sürekli yapmaya çalışıp beceremediği her defasında kullanıcı ayarlarından Hesap Denetimi'ni kapatmakla sonuçlanan... Linux sistemlerin fazlasıyla abartıp her defasında parola sorması ile kanser eden en büyük sorundur izinler. Nitekim birinde tamamen güvenliği kapatıp kurtulursunuz (neden sık sık format atmak zorunda kaldığımı anladım galiba) ama diğerinde böyle bir lüksünüz yoktur. Yani kendi bilgisayarınızda güvenlik açığı açmak özgürlüğünüz bile yoktur. Keşke çokça param olsaydı da 2 bilgisayar parsına bir tane Mac alıp onuda öğrenip eleştirebilseydim :( 

    Peki Google'in en başarılı bebeklerinden birisi olan Android bu sorunu nasıl aşmış. Çok zekice bir yöntem ile: Kurulan tüm programlara kurulum sırasında izin vererek. Android kullananlar Play'dan program yada oyun indirirken görmüşlerdir mutlaka. Program kurulmadan önce izinler sıralanır ve sizden bu izinleri onaylamanızı ister. Konumunuzu Alma, İnternete Erişim, Rehberinize Erişim vs. Bu izin listesinde olmayan hiç bir işleme ulaşma yetkisi yoktur. Peki bu yetkiler dahilinde kötü bir şey yapamaz mı. Tabi rehbere erişim ve internete erişim yetkisi olan birinin sizin rehberinizi kopyalayıp kendi sunucusuna atmasına engel olamazsınız. Bu yüzden program kurarken mutlaka izinleri okuyup programın çalışmasıyla alakası olmayan izinler varsa programı kurmayın. Android bu izin sistemini nasıl bu kadar iyi denetliyor derseniz işte orası asıl zekanın yeri. Tam bir makale konusu. 

    Tasarım
    Android için arayüz tasarlarken bir form yada bir sayfa ile başlamak zorunda değilsiniz. Bir arayüz direk bir buton yada bir listbox'da olabilir. İç içe geçmiş onlarca elemandan da oluşabilir. Yalnız aynı katmanda 80'den fazla eleman kullanınca performans uyarısı yapmaya başlıyor. Yuh 80 tane elemanın bir sayfada ne işi var demeyin sonuçta lazım oluyor. :) Tabi bu uyarı Eclipse'in söylediği sadece performansın kötü etkilenebileceğine dair bir uyarı yani bir kısıtlama değil. Eclipse sisteminde programınızı daha düzenli yazmanız için çok güzel yönlendirmeler var. Sırası geldikçe onlardan da bahsederim. 

    Tasarım için sayfanın en üst katmanı genelde Layout oluyor. Temelde Grid, Linear,Relative ve Table olarak 4 tane layout var. Şimdi anlatayım hepsini diyeceğim ama adından belli zaten diyip geçesim var.

    Neyse ya ne zaten kahvemde bitti. Sonra yazarken bahsederim yine..