android studio’daki güzel yenilikler

sürüm güncellemeleriyle ilgili blog yazma fikri tek başına çekici gelmese de yanında hoşuna giden şeyleri de yazma fikri değerli geliyor. kullananlar görmüştür: android studio ekibi birkaç gün önce ide’nin 0.3.2 sürümünü yayına almış. bu sürümün temel özelliği android kitkat‘a olan desteği. API 19′a tekabül eden KitKat ile birlikte bazı yeni Java 7 yenilikleri de kullanıma sunulmuş.

aslında android tarafında, uygulama yazarken kullanılan java sürümü diye bir tanımlama yok. API değeri tanımlaması var. biz java’yı sadece dilin özellikleri bakımından kullanıyoruz. şöyle ki her yeni android dağıtımının kendi API sürüm numarası var ve bu sürümlerde yeni bazı kütüphanelere de (library) destek var. bu kütüphaneler açık kaynaklı ve topluluk üretimi. kısacası android ekibi, android’in temel sınıflarını buralardan sağlayıp türetiyor. android studio’nun bu sürümünde de java dilinin 7 numaralı tanımlamasına uyan yenilikleri kullanmak mümkün. bunun için gradle inşa sistemine bazı uyumluluk yapılandırmalarını * vermeniz gerekiyor. güzel yenilikler şöyle:

  • java 7 desteği artırılmış. diamond operatör sayesinde generic class’lar ile çalışırken daha rahat olabilirsiniz.

generic collection‘ları dans ettirmiyor olsam da genelde ihtiyaçlarımı HashMap ve List kullanarak çözebiliyorum. zaten generic’leri etkili bir biçimde kullanmak icap eden tasarımlarda uzman değilim. bu yenilik sayesinde generic collection’larla çalışırken editörün geliştiriciye daha fazla yardımcı olabileceğini görebiliyorum. örneğin, tanımladığınız generic ile yanlış türden bir nesne irtibatı kurmanızı engelleyecek, kursanız da size mutlaka uyarısı dönecek bir özellik diamond operatör. bu konuda bir fikriniz varsa yazmanız beni mutlu eder.

  • java 7 getirisi multi-catch deyimine destek verilmiş. try-catch ile sarmaladığınız koddaki sınıfın fırlattığı exception’ları isterseniz tek catch deyimiyle alabiliyorsunuz. böylece catch bloğunda birden fazla exception’ı bir arada yakalama şansınız var. android’teki ortam, çeşitli hataları bir arada alabileceğiniz bir yapıda. bazen birkaç exception’ın bir arada olması, kullanıcı için bir anlama gelebilir. yahut hata ayıkladığınız sırada sizin için.

  • yeni try-with-resources‘a destek verilmiş.

bu ifadeyi bu sürümün duyurusuyla birlikte öğrendim. ilgi çekici. bununla birlikte

try {
    //asıl iş
} catch(Exception e) {
    //hata durumu
} finally {
    //asıl iş sırasında kullanılan 
    //kaynakların serbest bırakıldığı,
    //kapatıldığı blok}

gibi durumlarda

try (asıl işin kaynak hazırlığı) {
    //asıl iş
} catch(Exception e) {
    //hata durumu
}

yapısını kullanmak mümkün. try() içerisinde açtığınız kaynak (genelde stream türü şeyler), blok içerisinde kullanımı sona erdiğinde kendiliğinden kapatılıyor. güzel geliyor değil mi? tabi bu kaynağın Closable veya AutoClosable arayüz sınıfını implemente etmesi gerekiyor. android kitaplığında bu iki arayüz sınıfını implemente eden pek çok sınıf var. (bkz: sınıfların belgelerindeki “Known Indirect Subclasses” kısmı)

üzücü haber: try-with-resources ifadesini yalnızca minSdkVersion’u 19 olan projelerinizde kullanabilirsiniz. multi-catch ve diamond operator için bir bir istisna yok.

şu iki örnek de renk katsın: https://gist.github.com/caner/c43b638796343c68f98f

  • Android DDMS penceresi üzerinden bağlı bulunan fiziksel ya da öykünücü cihazın ekran görüntüsünü MPEG4 video olarak alma imkanı. 3. parti araçlara başvurmayı sevmeyenler için.

  • zaman kazandırıcı bir özellik olarak XML resource’ları düzenlerken değişiklikleri önizleme ekranında görebiliyorduk ancak bu her resource için geçerli değildi. desteklenenlere Drawable resource’lar da eklendi. şöyle bir örnek vermiş ekip:

yazarken değişikliği görme özelliği eclipse’ten geçenler için bence çok güzel bir özellik. chrome ve firefox’taki developer tools’u hatırlatıyor. yazarken değişikliği görme özelliği eclipse’ten geçenler için bence çok güzel bir özellik. chrome ve firefox’taki developer tools’u hatırlatıyor.

bana drawable’lar kullanılarak yapılan grafik işlemleri hep çekici gelir. karmaşık olmayacak tabi. (hatırlıyorum da, pardus linux 2011′in giriş ekranındaki gri temanın arkaplanı böyle bir şeydi. ekran oranına göre arkaplandaki plakçıklar/cam parçaları yerleşiyordu) tahmin ettiğim kadarıyla eşdeğer görüntünün sağlanabildiği durumlarda bitmap grafikler kullanmaktan daha akıllıca. yanılıyorsam lütfen düzeltin, drawable xml’ler ile gpu’nun hızlandırma desteğine de kavuşabiliyorduk.

  • menü için xml yazarken hemen kenarda bu kaynağı render edip gösterme özelliği.

tabi bu menünün kesin hali değil. çünkü bildiiniz gibi android’te bir menünün çok farklı kullanım yeri var. ancak overflow menü olarak göstermesi de yeterli gibi duruyor, çünkü ağırlıklı olarak menüleri bu şekilde kullanıyoruz.

  • gradle inşa sistemini daemon olarak çalıştırmayı sağlayan ayar seçeneği.

gradle’ı ilk defa styling android blogundan öğrenmeye başlamıştım. türkiye’deki android geliştirici günleri’ne de katılan mark allison‘un tuttuğu bir günlük. gradle inşa sistemini android için tanıtan seri yazısı var. ilki için: http://blog.stylingandroid.com/archives/1872

gradle’ı daemon olarak çalıştırıp hafızada tutarak, her defasında ilgili task’leri yerine getirmesi için tekrar tekrar baştan hazırlanıp çalışma zahmetinin önüne geçmiş oluyorsunuz. gradle’ı işletim sisteminizde bir servis yardımıyla açılışta başlatmıyorsanız veya projenizi çalıştırmadan önce konsoldan gradle’ı daemon olarak başlatmıyorsanız bu özellik size iyi gelecektir.

android studio ve özellikle gradle ile ilgili metin, makale önerilerinize açığım. iyi çalışmalar.

Caner Güral

learning enthusiast. e-learning designer. result-oriented. 27.