Android'in yeni sürümlerindeki API'ler uygulamanız için nadide özellikler sunarken, daha fazla cihaz güncellenene kadar Android'in eski sürümlerini destekleyemeye de devam etmelisiniz. Bu eğitim içeriği size, eski sürümleri desteklemeyi bırakmadan en son API'lerin üstünlüklerini de nasıl kullanacağınızı göstermeyi hedefliyor.
Platform versiyonlarının yer aldığı, Google Play Store'u ziyaret eden cihazlardan alınan bilgilerle düzenli olarak güncellenen şu sayfadan Android sürüm dağılımını görebilirsiniz.
Öneri: Farklı Android sürümlerinde işlevselliği ve en iyi özellikleri sağlamaya devam etmek için eski sürümlerde farklı son platform API'lerini kullanmanızı sağlayan Android Destekleme Kütüphanesi (Support Library) kullanmalısınız.
En Düşük ve Hedeflenen Sürüm Seviyesinin Belirlenmesi
AndroidManifest.xml dosyası, uygulamanızın hangi sürümler için çalışacağını ve uygulamanızın çeşitli detaylarını tanımlar. Manifest dosyasında yer alan <uses-sdk /> elementinde minSdkVersion ve targetSdkVersion öznitelikleri sayesinde, uygulamanızın çalışacağı en düşük API seviyesini ve uyumlu API seviyesini belirlersiniz. En yüksek API seviyesi genelde uygulamanızı tasarlayıp test ettiğiniz seviyeyi ifade eder.
Örnek:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest>
Android'in yeni bir sürümü yayınlandığında, bazı stiller ve davranışlar değişebilir. Bu değişiklerin uygulamanızda yer alması ve her kullanıcının cihazına uyması için targetSdkVersion değerini en son sürüm ile belirtmeniz iyi olacaktır.
Çalışma Zamanında Sistem Sürümünü Kontrol Etmek
Android, her platform sürümü için eşsiz (unique) bir kod adı sağlar ve bu kod adı, sabitlerden oluşan Build isimli bir sınıf sayesinde sağlanır. Uygulamanızı çalıştıracağınız sistemin sürümüne bu kod adı yardımıyla bakarak, o sürümde çalıştırabileceğiniz en uygun kodu işleme koyabilirsiniz. Örneğin uygulamanızla sadece Android 3.0 üzerindeki bir sistemde çalışıyorsa ActionBar göstermek isteyebilirsiniz:
private void setUpActionBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
NOT: Android, XML kaynaklarını ayrıştırırken o anki cihaz tarafından desteklenmeyen XML özniteliklerini (attribute) göz ardı eder. Bu yüzden, eski sürümlerin böyle kodlar gördüğünde es geçiyor olmasına kulak asmayıp, sadece yeni sürümler tarafından desteklenen XML özniteliklerini kullanabilirsiniz. Örneğin targetSdkVersion="11" tanımlamasını yaptıysanız, Android 3.0 ve üzerinde çalışan uygulamanıza varsayılan olarak ActionBar dahil edilecektir. Menü öğelerini Action Bar'a eklemek için de XML menü kaynağı dosyanızda ilgili menü öğesine android:showAsAction="ifRoom" ayarlamasını yapmanız gerekir. Bu ayarlamanın, sadece onu destekleyen Android sürümüne yönelik XML dosyasında (örneğin sadece res/menu-v11/ dizininde) yapılması daha doğru olacaktır. Çünkü eski Android sürümleri kolayca showAsAction özniteliğini es geçer.
Platformun Stil ve Temalarını Kullanmak
Android, kullanıcı deneyimini arttırmak için kendi temasını baz alan, sistem temasına benzeyen temalar sağlamaktadır. Bu temaları uygulamanızın manifest dosyasına ekleme yaparak kullanabilirsiniz. Yerleşik gelen bu stil ve temaları kullanarak uygulamanızın her yeni Android dağıtımıyla birlikte güncel ve doğal görünümü takip etmesini sağlayabilirsiniz:
Activity'nizin diyalog kutuları gibi olması için Activity temasına şunu eklemelisiniz:
<activity android:theme="@android:style/Theme.Dialog">
Activity'nizin arkaplanının transparan olması için:,
<activity android:theme="@android:style/Theme.Translucent">
Kendi özel temanızı /res/values/styles.xml içinde oluşturmak için:
<activity android:theme="@style/CustomTheme">
Temayı uygulamanızın tamamında kullanmak için <application> elemanının android:theme özniteliğinde yapmanız gereken değişiklik ise şöyle:
<application android:theme="@style/CustomTheme">
Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta belirlenen koşullara göre kullanılmıştır.
Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Supporting Different Platform Versions