API Düzeyi: 13
Android 3.2 (HONEYCOMB_MR2
), kullanıcılar ve geliştiriciler için yeni özellikler sunan artımlı bir platform sürümüdür. Aşağıdaki bölümlerde, yeni özelliklere ve geliştirici API'lerine genel bir bakış sunulmaktadır.
Android 3.2 platformu, geliştiriciler için Android SDK'sı tarafından indirilebilir bir bileşen olarak sunulur. İndirilebilir platformda Android kitaplığı ve sistem resminin yanı sıra bir dizi emülatör kaplaması ve daha fazlası bulunur. Android 3.2'ye göre geliştirmeye veya test etmeye başlamak için Android SDK Yöneticisi'ni kullanarak platformu SDK'nıza indirin.
Platformda Öne Çıkanlar
Yeni kullanıcı özellikleri
- Daha geniş bir tablet yelpazesi için optimizasyon
Android 3.2, daha geniş bir tablet cihaz yelpazesinde mükemmel bir kullanıcı deneyimi sağlamak için sistem genelinde çeşitli optimizasyonlar içerir.
- Sabit boyutlu uygulamalar için uyumluluk yakınlaştırması
Android 3.2, kullanıcılara sabit boyutlu uygulamaları daha büyük cihazlarda görüntülemenin yeni bir yolunu sunan yeni bir uyumluluk yakınlaştırma modu sunar. Yeni mod, tabletler gibi daha büyük ekran boyutlarında çalışacak şekilde tasarlanmamış uygulamalar için standart kullanıcı arayüzü uzatmasına piksel ölçeklendirmeli bir alternatif sunar. Yeni moda, uyumluluk desteğine ihtiyaç duyan uygulamalar için kullanıcılar sistem çubuğundaki bir menü simgesinden erişilebilirler.
- SD karttan medya senkronizasyonu
SD kartı destekleyen cihazlarda kullanıcılar artık medya dosyalarını doğrudan SD karttan kullanan uygulamalara yükleyebilir. Sistem özelliği, dosyaların sistem medya mağazasındaki uygulamalar tarafından erişilebilir olmasını sağlar.
Yeni geliştirici özellikleri
- Ekran desteği yönetmek için genişletilmiş API
Android 3.2, platformun ekran desteği API'sinde geliştiricilere çeşitli Android destekli cihazlarda uygulama kullanıcı arayüzünü yönetmeleri için ek yöntemler sağlar. API, genelleştirilmiş boyut kategorilerine güvenmek yerine uygulamalarınızın farklı boyutlarda nasıl gösterileceği üzerinde daha hassas kontrol sahibi olmanızı sağlayan yeni kaynak niteleyiciler ve yeni manifest özellikleri içerir.
Platform, sabit boyutlu uygulamalar ve çeşitli ekran boyutları için sınırlı destek sunan uygulamalarda mümkün olan en iyi görüntülemeyi sağlamak amacıyla, kullanıcı arayüzünü daha küçük bir ekran alanında oluşturduktan sonra ekrandaki mevcut alanı dolduracak şekilde ölçeklendiren yeni bir yakınlaştırma uyumluluk modu da sunar. Ekran desteği API'si ve sağladığı kontroller hakkında daha fazla bilgi için aşağıdaki bölümlere bakın.
API'ye Genel Bakış
Screens Destek API'leri
Android 3.2, uygulamalarının farklı ekran boyutlarında nasıl görüntüleneceği üzerinde daha fazla kontrol sahibi olmanızı sağlayan API'leri destekleyen yeni ekranları kullanıma sundu. API, platformun genelleştirilmiş ekran yoğunluğu modeli de dahil olmak üzere mevcut ekranları destekleyen API'yi temel alır. Ancak bu API'yi, belirli ekran aralıklarını, genel ekran boyutlarına (büyük veya büyük gibi) göre değil, yoğunluktan bağımsız piksel birimleriyle (600 dp veya 720 dp genişlik gibi) ölçülen boyutlarına göre hassas bir şekilde hedefleme özelliği ile genişletir.
Bir uygulamanın kullanıcı arayüzünü tasarlarken, yoğunluk soyutlaması sağlamak için platformdan yararlanabilirsiniz. Bu sayede, uygulamaların cihazlar arasındaki gerçek piksel yoğunluğundaki farklılıkları telafi etmesine gerek kalmaz. Uygulama kullanıcı arayüzünü, mevcut yatay veya dikey alan miktarına göre tasarlayabilirsiniz. Platform, kullanılabilir alan miktarını üç yeni özellik kullanarak ifade eder: smallestWidth, width ve height.
- Bir ekranın smallestWidth, yoğunluktan bağımsız piksel ("dp") birimleriyle ölçülen temel minimum boyutudur. Ekranın yüksekliği veya genişliği arasından kısa olan. Dikey yönde olan bir ekran için smallestWidth normalde genişliğine, yatay yönde olan bir ekran için ise yüksekliğine göre belirlenir. smallestWidth her durumda ekranın sabit bir özelliğinden türetilir ve değer, yönde değişiklikten bağımsız olarak değişmez. En küçük genişlik, sistem tarafından ayrılan ekran alanları hariç, uygulama kullanıcı arayüzünün çizilmesi gereken mümkün olan en kısa genişliği temsil ettiği için uygulamalar için önemlidir.
- Buna karşılık, bir ekranın width ve height değerleri, sistem tarafından ayrılmış ekran alanları hariç, "dp" birimler cinsinden ölçülen uygulama düzeni için kullanılabilen geçerli yatay veya dikey alanı temsil eder. Kullanıcı yönü yatay ve dikey arasında değiştirdiğinde ekranın genişliği ve yüksekliği değişir.
Yeni ekranlar desteği API'si, uygulama kullanıcı arayüzünü geçerli ekranın en küçükGenişliği'ne göre yönetmenizi sağlamak için tasarlanmıştır. Gerekirse kullanıcı arayüzünü mevcut genişliğe veya yüksekliğe göre de yönetebilirsiniz. API bu amaçlar doğrultusunda aşağıdaki araçları sağlar:
- Düzenleri ve diğer kaynakları en az minimum genişlik, genişlik veya yükseklik değerine hedeflemek için yeni kaynak niteleyiciler ve
- Uygulamanın maksimum ekran uyumluluğu aralığını belirtmek için yeni manifest özellikleri
Ayrıca, uygulamalar platformun önceki sürümlerinde olduğu gibi, sistemi sorgulamaya ve çalışma zamanında kullanıcı arayüzü ve kaynak yüklemeyi yönetmeye devam edebilir.
Yeni API, ekranları en küçük genişlik, genişlik ve yükseklik aracılığıyla daha doğrudan hedeflemenize olanak tanıdığından farklı ekran türlerinin tipik özelliklerini anlamak faydalı olur. Aşağıdaki tabloda, "dp" birimlerinde ölçülen bazı örnekler verilmiştir.
Tür | Yoğunluk (genelleştirilmiş) | Boyutlar (dp) | smallestWidth (dp) |
---|---|---|---|
Referans telefon | mdpi | 320x480 | 320 |
Küçük tablet/büyük telefon | mdpi | 480x800 | 480 |
7 inç tablet | mdpi | 600 x 1.024 | 600 |
10 inç tablet | mdpi | 800x1280 | 800 |
Aşağıdaki bölümlerde, yeni ekran niteleyiciler ve manifest özellikleri hakkında daha fazla bilgi verilmektedir. Screen Support API'nin nasıl kullanılacağıyla ilgili eksiksiz bilgi için Birden Çok Ekranı Destekleme bölümüne bakın.
Ekran desteği için yeni kaynak niteleyiciler
Android 3.2'deki yeni kaynak niteleyiciler, düzenlerinizi ekran boyutu aralıkları için daha iyi hedeflemenize olanak tanır. Niteleyicileri kullanarak, belirli bir minimum smallestWidth, mevcut genişlik veya mevcut yükseklik için tasarlanmış, yoğunluğa bağlı olmayan piksel cinsinden ölçülen kaynak yapılandırmaları oluşturabilirsiniz.
Yeni niteleyiciler şunlardır:
swNNNdp
— "dp" birimleriyle ölçülen, kaynağın kullanılması gereken minimum en küçükGenişlik değerini belirtir. Yukarıda belirtildiği gibi, yönten bağımsız olarak bir ekranın en küçükGenişliği sabittir. Örnekler:sw320dp
,sw720dp
,sw720dp
.wNNNdp
vehNNNdp
: Kaynağın "dp" birimlerinde ölçülen minimum genişliğini veya yüksekliğini belirtir. Yukarıda da belirtildiği gibi, ekranın genişliği ve yüksekliği ekranın yönüne göre değişir ve yön değiştiğinde de değişir. Örnekler:w320dp
,w720dp
,h1024dp
.
Gerekirse birden fazla çakışan kaynak yapılandırması da oluşturabilirsiniz. Örneğin, bazı kaynakları 480 dp'den geniş ekranlarda, bazılarını 600 dp'den geniş ekranlarda ve bazılarını da 720 dp'den geniş ekranlarda kullanılmak üzere etiketleyebilirsiniz. Birden fazla kaynak yapılandırması belirli bir ekran için uygun olduğunda, sistem en yakın eşleşmeye sahip yapılandırmayı seçer. Belirli bir ekranda hangi kaynakların yükleneceği konusunda hassas kontrol için kaynakları tek bir niteleyiciyle etiketleyebilir veya birkaç yeni ya da mevcut niteleyiciyi birleştirebilirsiniz.
Daha önce listelenen tipik boyutlara dayanarak, yeni niteleyicileri nasıl kullanabileceğinize dair bazı örnekler aşağıda verilmiştir:
res/layout/main_activity.xml # For phones res/layout-sw600dp/main_activity.xml # For 7” tablets res/layout-sw720dp/main_activity.xml # For 10” tablets res/layout-w600dp/main_activity.xml # Multi-pane when enough width res/layout-sw600dp-w720dp/main_activity.xml # For large width
Platformun eski sürümleri yeni nitelikleri yoksayar. Bu nedenle, uygulamanızın tüm cihazlarda harika görünmesini sağlamak için bunları gerektiği gibi karıştırabilirsiniz. Aşağıda birkaç örnek verilmiştir:
res/layout/main_activity.xml # For phones res/layout-xlarge/main_activity.xml # For pre-3.2 tablets res/layout-sw600dp/main_activity.xml # For 3.2 and up tablets
Yeni niteleyicilerin nasıl kullanılacağı hakkında eksiksiz bilgi için Yeni boyut niteleyicileri kullanma bölümüne bakın.
Ekran boyutu uyumluluğu için yeni manifest özellikleri
Çerçeve, uygulamanızın farklı ekran boyutlarını destekleme durumunu yönetmenize olanak tanıyan yeni bir <supports-screens>
manifest özelliği grubu sunar.
Daha açık belirtmek gerekirse, uygulamanızın çalıştırılması için tasarlandığı en büyük ve en küçük ekranları, ayrıca sistemin yeni ekran uyumluluk moduna ihtiyaç duymadan çalıştırılması için tasarlandığı en büyük ekranı belirtebilirsiniz. Yukarıda açıklanan kaynak nitelikleri gibi yeni manifest özellikleri de uygulamanın desteklediği ekran aralığını belirtir. Bu aralığın değeri smallestWidth tarafından belirtilir.
Ekran desteği için yeni manifest özellikleri şunlardır:
android:compatibleWidthLimitDp="numDp"
: Bu özellik, uyumluluk moduna ihtiyaç duymadan uygulamanın çalışabileceği maksimum minimum genişlik değerini belirtmenize olanak tanır. Geçerli ekran belirtilen değerden büyükse sistem, uygulamayı normal modda görüntüler ancak kullanıcının isteğe bağlı olarak sistem çubuğundaki bir ayarı kullanarak uyumluluk moduna geçmesine izin verir.android:largestWidthLimitDp="numDp"
: Bu özellik, uygulamanın çalışması için tasarlandığı maksimum minimum genişlik değerini belirtmenize olanak tanır. Mevcut ekran belirtilen değerden büyükse sistem, mevcut ekranda en iyi şekilde görüntülendiğinden emin olmak için uygulamayı ekran uyumluluğu moduna geçmeye zorlar.android:requiresSmallestWidthDp="numDp"
: Bu özellik, uygulamanın çalışabileceği minimum smallestWidth değerini belirtmenize olanak tanır. Mevcut ekran belirtilen değerden küçükse sistem, uygulamanın cihazla uyumlu olmadığını düşünür ancak uygulamanın yüklenmesini ve çalıştırılmasını engellemez.
Not: Google Play şu anda uygulamaları yukarıdaki özelliklere göre filtrelememektedir. Filtreleme desteği sonraki bir platform sürümünde eklenecektir. Ekran boyutuna göre filtreleme gerektiren uygulamalar mevcut <supports-screens>
özelliklerini kullanabilir.
Yeni özelliklerin nasıl kullanılacağıyla ilgili tüm bilgiler için Ekran boyutu desteğini bildirme bölümüne bakın.
Ekran uyumluluğu modu
Android 3.2, çalıştırıldıkları kadar büyük ekranları desteklemediğini açıkça belirten uygulamalar için yeni bir ekran uyumluluk modu sağlar. Bu yeni "yakınlaştırma" modu, piksel ölçeklidir. Uygulamayı daha küçük ekran alanında oluşturur ve daha sonra, mevcut ekranı dolduracak şekilde pikselleri ölçeklendirir.
Sistem, varsayılan olarak ekran uyumluluğu modunu, bunu gerektiren uygulamalar için kullanıcı seçeneği olarak sunar. Kullanıcılar, sistem çubuğundaki bir denetimi kullanarak yakınlaştırma modunu etkinleştirebilir veya devre dışı bırakabilir.
Yeni ekran uyumluluğu modu tüm uygulamalar için uygun olmayabileceğinden platform, uygulamanın manifest özelliklerini kullanarak bu modu devre dışı bırakmasına izin verir. Uygulama tarafından devre dışı bırakıldığında sistem, uygulama çalışırken kullanıcılar için "yakınlaştırma" uyumluluk modunu seçenek olarak sunmaz.
Not: Uygulamalarınızda uyumluluk modunu nasıl kontrol edeceğiniz hakkında önemli bilgiler için lütfen Android Developers Blog'daki Büyük Ekranlardaki Uygulamalar İçin Yeni Mod makalesini inceleyin.
720p televizyonlar ve benzer cihazlar için yeni ekran yoğunluğu
Android 3.2, 720p televizyonlarda veya orta yoğunluktaki ekranlara sahip benzer cihazlarda çalışan uygulamaların ihtiyaçlarını karşılamak için yaklaşık 213 dpi'ye sahip yeni bir genelleştirilmiş yoğunluk olan tvdpi
'ü kullanıma sunar. Uygulamalar, densityDpi
içinde yeni yoğunluk için sorgu yapabilir ve televizyonlar ile benzer cihazlara ait kaynakları etiketlemek için yeni tvdpi
niteleyicisini kullanabilir. Örnek:
res/drawable-tvdpi/my_icon.png # Bitmap for tv density
Genel olarak, uygulamaların bu yoğunlukta çalışması gerekmez. 720p ekran için çıkışın gerekli olduğu durumlarda kullanıcı arayüzü öğeleri platform tarafından otomatik olarak ölçeklendirilebilir.
Kullanıcı arayüzü çerçevesi
- Parçalar
- Yeni
Fragment.SavedState
sınıfı,saveFragmentInstanceState()
aracılığıyla bir parça örneğinden alınan durum bilgilerini barındırır. - Yeni
saveFragmentInstanceState()
yöntemi, belirtilen Fragment'in mevcut örnek durumunu kaydeder. Bu durum, daha sonra mevcut durumla eşleşen yeni bir Parça örneği oluştururken kullanılabilir. - Yeni
setInitialSavedState()
yöntemi, bir Parçanın ilk oluşturulma sırasındaki ilk kaydedilen durumunu belirler. - Yeni
onViewCreated()
geri çağırma yöntemi,onCreateView()
'un döndürüldüğünü ancak kaydedilmiş bir durumun Görüntüleme'ye geri yüklenmesinden önce Fragment'i bilgilendirir. isDetached()
yöntemi, Parçanın kullanıcı arayüzünden açıkça ayrılıp ayrılmadığını belirler.- Yeni
attach()
vedetach()
yöntemleri, uygulamaların kullanıcı arayüzündeki parçaları yeniden eklemesini veya çıkarmasını sağlar. - Yeni bir
setCustomAnimations()
aşırı yükleme yöntemi, giriş/çıkış işlemleri için ve özellikle de arka yığını açılırken çalışacak belirli animasyon kaynaklarını ayarlayabilmenizi sağlar. Mevcut uygulama, arka yığının pop'lenmesiyle ilgili parçaların farklı davranışını hesaba katmaz.
- Yeni
- ActivityInfo ve ApplicationInfo'daki ekran boyutu bilgileri
ActivityInfo
,configChanges
'aCONFIG_SCREEN_SIZE
veCONFIG_SMALLEST_SCREEN_SIZE
bit maskelerini ekler. Bitler, bir etkinliğin ekran boyutunu ve en küçük ekran boyutunu kendi başına işleyip işleyemeyeceğini gösterir.ApplicationInfo
, uygulama manifest dosyasında ilgili<supports-screens>
özelliklerinden türetilenlargestWidthLimitDp
,compatibleWidthLimitDp
verequiresSmallestWidthDp
alanlarını ekler.
- WindowManager'dan görüntü boyutunu alma yardımcıları
- Yeni
getSize()
vegetRectSize()
yöntemleri, uygulamaların ekranın ham boyutunu almasına olanak tanır.
- Yeni
- Herkese açık yeni "holografik" stiller
- Platformda artık metin, işlem çubuğu widget'ları, sekmeler ve daha fazlası için çeşitli herkese açık "holografik" stiller sunulmaktadır. Tam listeyi
R.style
- Platformda artık metin, işlem çubuğu widget'ları, sekmeler ve daha fazlası için çeşitli herkese açık "holografik" stiller sunulmaktadır. Tam listeyi
LocalActivityManager
,ActivityGroup
veLocalActivityManager
desteği sonlandırıldı- Yeni uygulamalarda bu sınıflar yerine Fragments kullanılmalıdır. Platformun eski sürümlerinde çalışmaya devam etmek için Android SDK'da bulunan v4 Destek Kitaplığı'nı (uyumluluk kitaplığı) kullanabilirsiniz. v4 Destek Kitaplığı, Fragment API'nin Android 1.6'ya (API düzeyi 4) kadar uyumlu bir sürümünü sunar.
- Android 3.0 (API düzeyi 11) veya sonraki sürümler için geliştirilen uygulamalarda sekmeler, genellikle sekmeleri işlem çubuğu alanlarına yerleştirmek amacıyla yeni
ActionBar.newTab()
ve ilgili API'ler kullanılarak kullanıcı arayüzünde sunulur.
Medya çerçevesi
- Platformun medya sağlayıcısını (
MediaStore
) kullanan uygulamalar artık cihazın desteklediği çıkarılabilir SD karttaki medya verilerini doğrudan okuyabilir. Uygulamalar, MTP API'yi kullanarak doğrudan SD kart dosyalarıyla da etkileşim kurabilir.
Grafik
- Point ve PointF'te ayrıştırılabilir yardımcı programlar
Point
vePointF
sınıfları artıkParcelable
arayüzünü vedescribeContents()
,readFromParcel()
vewriteToParcel()
yardımcı program yöntemlerini içeriyor.
IME çerçevesi
- Değiştirici tuşların mevcut durumunu almak için yeni
getModifiers()
yöntemi.
USB çerçevesi
- Cihazın ham USB tanımlayıcılarını almak için yeni
getRawDescriptors()
yöntemi. Bu yöntemi, doğrudan üst düzey API'ler üzerinden desteklenmeyen tanımlayıcılara erişmek için kullanabilirsiniz.
Ağ
- Ağ türü sabitleri
ConnectivityManager
,TYPE_ETHERNET
veTYPE_BLUETOOTH
sabitlerini ekler.
Telefon
- Yeni
NETWORK_TYPE_HSPAP
ağ türü sabiti.
Temel yardımcı programlar
- Ayrıştırılabilir kamu hizmetleri
- Yeni arayüz
Parcelable.ClassLoaderCreator
, uygulamanın, nesnenin oluşturulmakta olduğu ClassLoader'ı almasına izin verir. ParcelFileDescriptor
nesnelerini yönetmek için yeniadoptFd
,dup()
vefromFd()
- Yeni arayüz
- Binder ve IBinder
Binder
veIBinder
'deki yenidumpAsync()
yöntemi, uygulamaların belirli bir dosyaya dökümü alınmasına olanak tanıyarak hedefin eşzamansız olarak yürütülmesini sağlar.- Yeni
IBinder
protokolü işlem kodu (TWEET_TRANSACTION
), uygulamaların hedef nesneye tweet göndermesine olanak tanır.
Yeni özellik sabitleri
Platform, Google Play gibi harici tüzel kişileri gerekli donanım ve yazılım özelliklerinden haberdar etmek için uygulama manifest dosyalarında tanımlayabileceğiniz yeni donanım özelliği sabitleri ekler. Bunları ve diğer özellik sabitlerini <uses-feature>
manifest öğelerinde belirtirsiniz.
Google Play, uygulamaların yalnızca gereksinimlerinin karşılandığı cihazlarda kullanılabilmesini sağlamak için uygulamaları <uses-feature>
özelliklerine göre filtreler.
- Yatay veya dikey gereksinimleri için özellik sabitleri
Android 3.2, uygulamaların yatay, dikey veya her iki yönde de görüntülenip görüntülenmeyeceğini belirtmesine olanak tanıyan yeni özellik sabitleri sunar. Bu sabit değerlerin bildirilmesi, uygulamanın, ilgili yönü sunmayan bir cihaza yüklenmemesi gerektiği anlamına gelir. Bunun aksine, sabit değerlerden biri veya her ikisi de bildirilmezse uygulamanın, bildirilmeyen yönler için bir tercihi olmadığını ve bu yönleri sunmayan bir cihaza yüklenebileceğini belirtir.
android.hardware.screen.landscape
— Uygulama, yatay yönde görüntülemeyi gerektirir.android.hardware.screen.portrait
: Uygulamanın dikey yönde görüntülenmesi gerekir.
Hem yatay hem de dikey yönlerde düzgün çalışan tipik bir uygulamanın normalde yön şartı beyan etmesi gerekmez. Daha ziyade, tek bir yön için tasarlanmış bir uygulama (ör. televizyon için tasarlanmış bir uygulama), belirli bir yönü sağlamayan cihazlarda kullanılamamasını sağlamak için sabit değerlerden birini beyan edebilir.
Manifest dosyasında belirtilen etkinliklerden herhangi biri,
android:screenOrientation
özelliğini kullanarak belirli bir yönde çalıştırılmasını istiyorsa bu, uygulamanın bu yönü gerektirdiğini de belirtir. - Diğer özellik sabitleri
android.hardware.faketouch.multitouch.distinct
: Uygulama, iki veya daha fazla noktanın ayrı ayrı izlendiği taklit edilmiş çoklu dokunma girişi desteği gerektirir.android.hardware.faketouch.multitouch.jazzhand
: Uygulama, beş veya daha fazla noktanın ayrı ayrı izlendiği taklitli çoklu dokunma girişi desteği gerektirir.
API Farklılıkları Raporu
Android 3.2'deki (API Seviyesi 13) tüm API değişikliklerinin ayrıntılı görünümü için API Farklılık Raporu'na bakın.
API Düzeyi
Android 3.2 platformu, çerçeve API'sinin güncellenmiş bir sürümünü sunar. Android 3.2 API'ye, sistemin kendisinde depolanan bir tam sayı tanımlayıcı (13) atanır. "API Düzeyi" adı verilen bu tanımlayıcı, sistemin uygulamayı yüklemeden önce bir uygulamanın sistemle uyumlu olup olmadığını doğru şekilde belirlemesine olanak tanır.
Android 3.2'de kullanıma sunulan API'leri uygulamanızda kullanmak için uygulamayı, Android 3.2 SDK platformunda sağlanan Android kitaplığına göre derlemeniz gerekir. İhtiyaçlarınıza bağlı olarak, uygulamanın manifest dosyasındaki <uses-sdk>
öğesine bir android:minSdkVersion="13"
özelliği eklemeniz de gerekebilir.
Daha fazla bilgi için API Düzeyi nedir? başlıklı makaleyi okuyun.