API Düzeyi: 13
Android 3.2 (HONEYCOMB_MR2
), kullanıcılar ve geliştiriciler için yeni özellikler ekleyen artımlı bir platform sürümüdür. Aşağıdaki bölümlerde yeni özellikler ve geliştirici API'lerine genel bir bakış sunulmaktadır.
Android 3.2 platformu, geliştiriciler açısından Android SDK'sı için indirilebilir bir bileşen olarak mevcuttur. İndirilebilir platformda bir Android kitaplığı ve sistem görüntüsünün yanı sıra bir dizi emülatör dış görünümü ve daha fazlası bulunur. Android 3.2'ye yönelik 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 optimizasyonlar
Android 3.2, daha çeşitli tablet cihazlarda 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 uyumluluk yakınlaştırma modunu kullanıma sunuyor. Yeni mod, tablet gibi daha büyük ekran boyutlarında çalışacak şekilde tasarlanmamış uygulamalar için standart kullanıcı arayüzü genişletmesine alternatif olarak piksel ölçeklendirmeli bir alternatif sunar. Kullanıcılar yeni moda, uyumluluk desteği gereken uygulamalar için sistem çubuğundaki bir menü simgesinden erişebilirler.
- SD karttan medya senkronizasyonu
SD kartı destekleyen cihazlarda, kullanıcılar artık medya dosyalarını doğrudan SD karttan, bunları kullanan uygulamalara yükleyebilirler. Bir sistem özelliği, dosyalara sistem medya mağazasındaki uygulamalara erişilebilmesini sağlar.
Yeni geliştirici özellikleri
- Ekran desteği yönetimi için genişletilmiş API
Android 3.2, platformun ekran desteği API'sinde uzantılar sunarak geliştiricilere, çeşitli Android destekli cihazlarda uygulama kullanıcı arayüzünü yönetmeleri için ek yollar sunuyor. API, yeni kaynak niteleyicileri ve yeni manifest özellikleri içerir. Bu özellikler, genelleştirilmiş boyut kategorilerine bağlı kalmak yerine, uygulamalarınızın farklı boyutlarda nasıl görüntüleneceği konusunda daha hassas bir kontrole sahip olmanızı sağlar.
Platform, çeşitli ekran boyutlarını sınırlı olarak destekleyen sabit boyutlu uygulamalarda ve uygulamalarda mümkün olan en iyi görüntüyü sunmak için, kullanıcı arayüzünü daha küçük bir ekran alanında oluşturan, ardından ekrandaki mevcut alanı dolduracak şekilde ölçeklendiren yeni bir yakınlaştırma uyumluluğu modu da sunar. Ekran desteği API'si ve sağladığı denetimler hakkında daha fazla bilgi için aşağıdaki bölümlere bakın.
API'ye Genel Bakış
Ekran Desteği API'leri
Android 3.2'de, uygulamaların farklı ekran boyutlarında görüntülenme şekli üzerinde daha fazla kontrol sahibi olmanızı sağlayan yeni ekranları destekleyen API'ler kullanıma sunuluyor. API, platformun genel ekran yoğunluğu modeli de dahil olmak üzere mevcut ekran desteği API'sini temel alır, ancak belirli ekran aralıklarını, genelleştirilmiş ekran boyutları (büyük veya xlarge gibi) yerine yoğunluktan bağımsız piksel birimleri (600 dp veya 720 dp genişliği gibi) olarak ölçülen boyutlarına göre hassas bir şekilde hedefleme özelliğiyle genişletir.
Bir uygulamanın kullanıcı arayüzünü tasarlarken yoğunluk soyutlaması için platforma güvenebilirsiniz. Diğer bir deyişle, uygulamaların cihazlar arasında gerçek piksel yoğunluğundaki farklılıkları telafi etmesi gerekmez. Uygulama kullanıcı arayüzünü, kullanılabilen yatay veya dikey alan miktarına göre tasarlayabilirsiniz. Platform, kullanılabilir alan miktarını şu üç yeni özelliği kullanarak ifade eder: smallestwidth, width ve height.
- Bir ekranın smallestwidth, yoğunluktan bağımsız piksel ("dp") birimleri cinsinden ölçülen temel minimum boyutudur. Ekran yüksekliği veya genişliği, ikisinden daha kısa olanıdır. Dikey yöndeki bir ekran için smallestWIDTH, normalde genişliğine, yatay yönde ise yüksekliğine bağlıdır. Tüm durumlarda, smallestwidth, ekranın sabit bir özelliğinden türetilir ve değer, yönden bağımsız olarak değişmez. Smallestwidth; sistem tarafından ayrılan ekran alanları hariç olmak üzere, uygulama kullanıcı arayüzünün çizilmesi gereken mümkün olan en kısa genişliği temsil ettiğinden uygulamalar açısından önemlidir.
- Buna karşılık, bir ekranın width ve height değerleri, sistem tarafından ayrılmış ekran alanları hariç olmak üzere "dp" birimleri olarak ölçülen, uygulama düzeni için mevcut yatay veya dikey alanı temsil eder. Kullanıcı yatay ve dikey yön arasında geçiş yaptığında ekranın genişliği ve yüksekliği değişir.
Yeni ekranlar için destek API'si, uygulama kullanıcı arayüzünü mevcut ekranın en küçük Genişliğine göre yönetmenize olanak tanıyacak şekilde tasarlanmıştır. Ayrıca, gerektiğinde kullanıcı arayüzünü mevcut genişliğe veya yüksekliğe göre de yönetebilirsiniz. API bu amaçlar için aşağıdaki araçları sağlar:
- Düzenleri ve diğer kaynakları minimum smallestwidth, genişlik veya yüksekliğe göre hedeflemek için yeni kaynak niteleyiciler
- 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 çalışma zamanında sistemi sorgulayabilir ve kullanıcı arayüzü ve kaynak yüklemesini yönetmeye devam edebilir.
Yeni API, küçükestGenişlik, genişlik ve yükseklik aracılığıyla ekranları daha doğrudan hedeflemenize olanak tanır. Bu nedenle, farklı ekran türlerinin tipik özelliklerini anlamak faydalıdır. Aşağıdaki tabloda, "dp" cinsinden ölçülen bazı örnekler verilmiştir.
Tür | Yoğunluk (genelleştirilmiş) | Boyutlar (dp) | SmallestGenişliği (dp) |
---|---|---|---|
Temel 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 | 800x1.280 | 800 |
Aşağıdaki bölümlerde yeni ekran niteleyicileri ve manifest özellikleri hakkında daha fazla bilgi verilmektedir. Ekran desteği API'sinin nasıl kullanılacağıyla ilgili tüm bilgiler için Birden Fazla Ekranı Destekleme bölümüne bakın.
Ekranlar için yeni kaynak niteleyiciler desteği
Android 3.2'deki yeni kaynak niteleyicileri, ekran boyutu aralıkları için düzenlerinizi daha iyi hedeflemenize olanak tanır. Niteleyicileri kullanarak, yoğunluktan bağımsız piksellerle ölçülen belirli bir minimum smallestWIDTH, geçerli genişlik veya geçerli yükseklik için tasarlanmış kaynak yapılandırmaları oluşturabilirsiniz.
Yeni niteleyiciler şunlardır:
swNNNdp
: Kaynağın kullanılması gereken minimum smallestWIDTH değerini belirtir ve "dp" birimleri cinsinden ölçülür. Yukarıda belirtildiği gibi, bir ekranın en küçük Genişliği yönü ne olursa olsun sabittir. Örnekler:sw320dp
,sw720dp
,sw720dp
.wNNNdp
vehNNNdp
: Kaynağın kullanılması gereken minimum genişliği veya yüksekliği belirtir. "dp" birimleri cinsinden ölçülür. Yukarıda bahsedildiği gibi, bir 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ğ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ş, diğerlerini 600 dp'den geniş ekranlarda ve diğerlerini 720 dp'den geniş herhangi bir ekranda kullanmak için etiketleyebilirsiniz. Belirli bir ekran için birden fazla kaynak yapılandırması uygun olduğunda, sistem en yakın eşleşme olan yapılandırmayı seçer. Belirli bir ekranda hangi kaynakların yükleneceğini hassas bir şekilde kontrol etmek için kaynakları tek bir niteleyiciyle etiketleyebilir veya yeni ya da mevcut niteleyicileri birleştirebilirsiniz.
Daha önce listelenen tipik boyutlara dayalı olarak, yeni niteleyicileri nasıl kullanabileceğinize ilişkin 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 niteleyicileri yoksayacaktır. Dolayısıyla uygulamanızın tüm cihazlarda iyi 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ğıyla ilgili tüm bilgiler için Yeni boyut niteleyicilerini kullanma bölümüne bakın.
Ekran boyutu uyumluluğu için yeni manifest özellikleri
Çerçeve, uygulamanızın farklı ekran boyutlarında verdiği desteği yönetmenize olanak tanıyan yeni bir <supports-screens>
manifest özellikleri grubu sunar.
Özellikle, uygulamanızın çalışmak üzere tasarlandığı en büyük ve en küçük ekranların yanı sıra, tasarlandığı en büyük ekranın yanı sıra sistemin yeni ekran uyumluluk moduna gerek kalmadan çalışacağını belirtebilirsiniz. Yukarıda açıklanan kaynak niteleyicilerde olduğu gibi yeni manifest özellikleri, smallestwidth tarafından belirtilen şekilde uygulamanın desteklediği ekran aralığını belirtir.
Ekran desteği için yeni manifest özellikleri şunlardır:
android:compatibleWidthLimitDp="numDp"
- Bu özellik, uygulamanın uyumluluk moduna gerek kalmadan çalıştırılabileceği maksimum smallestwidth değerini belirtmenizi sağlar. 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 aracılığıyla uyumluluk moduna geçmesine izin verir.android:largestWidthLimitDp="numDp"
- Bu özellik, uygulamanın çalışmak için tasarlandığı maksimum smallestWIDTH değerini belirtmenizi sağlar. Geçerli ekran belirtilen değerden büyükse sistem, geçerli ekranda en iyi görünümü sağlamak için uygulamayı ekran uyumluluğu moduna zorlar.android:requiresSmallestWidthDp="numDp"
- Bu özellik, uygulamanın çalıştırılabileceği minimum smallestWIDTH değerini belirtmenizi sağlar. Geçerli ekran belirtilen değerden küçükse sistem, uygulamanın cihazla uyumsuz olduğunu varsayar ancak uygulamanın yüklenip çalıştırılmasını engellemez.
Not: Google Play şu anda uygulamaları yukarıdaki özelliklerden herhangi birine 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ği bildirme bölümüne bakın.
Ekran uyumluluğu modu
Android 3.2, çalıştıkları ekran boyutu kadar büyük ekranları desteklemediğini açıkça belirten uygulamalar için yeni bir ekran uyumluluğu modu sağlar. Bu yeni "yakınlaştırma" modu piksel ölçeğine dayalıdır ve uygulamayı daha küçük bir ekran alanında oluşturur. Ardından pikselleri, mevcut ekranı dolduracak şekilde ölçeklendirir.
Varsayılan olarak sistem, ekran uyumluluğu modunu gerektiren uygulamalar için kullanıcı seçeneği olarak sunar. Kullanıcılar, sistem çubuğunda bulunan bir denetimi kullanarak yakınlaştırma modunu açıp kapatabilir.
Yeni ekran uyumluluğu modu tüm uygulamalar için uygun olmayabileceğinden platform, uygulamanın manifest özelliklerini kullanarak bunu devre dışı bırakmasına izin verir. Uygulama tarafından devre dışı bırakıldığında sistem, uygulama çalışırken kullanıcılara "yakınlaştırma" uyumluluk modunu seçenek olarak sunmaz.
Not: Uygulamalarınızda uyumluluk modunu nasıl kontrol edeceğinizle ilgili önemli bilgiler için lütfen Android Geliştiricileri Blogu'ndaki Büyük Ekranlardaki Uygulamalar iç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ğunlukta ekranlara sahip benzer cihazlarda çalışan uygulamaların ihtiyaçlarını karşılamak için yaklaşık 213 dpi'ye sahip yeni bir genel yoğunluklu yoğunluğu (tvdpi
) kullanıma sunar. Uygulamalar, densityDpi
içindeki yeni yoğunluğu sorgulayabilir ve televizyonlar ve benzer cihazlar için kaynakları etiketlemek üzere yeni tvdpi
niteleyicisini kullanabilir. Örneğin:
res/drawable-tvdpi/my_icon.png # Bitmap for tv density
Genel olarak, uygulamaların bu yoğunlukla çalışması gerekmez. 720p ekranda çıktını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 içerir. - Yeni
saveFragmentInstanceState()
yöntemi, belirtilen Parçanın mevcut örnek durumunu kaydeder. Durum, daha sonra Parçanın mevcut durumla eşleşen yeni bir örneğini oluştururken kullanılabilir. - Yeni yöntem (
setInitialSavedState()
), bir parçanın ilk oluşturulma sırasındaki ilk kaydedilen durumunu belirler. - Yeni
onViewCreated()
geri çağırma yöntemi, kaydedilen herhangi bir durum Görünüme geri yüklenmeden önceonCreateView()
öğesinin geri döndüğünü Fragment'a bildirir. isDetached()
yöntemi, Parçanın kullanıcı arayüzünden açık bir şekilde ayrılıp ayrılmadığını belirler.- Yeni
attach()
vedetach()
yöntemleri, bir uygulamanın kullanıcı arayüzündeki parçaları yeniden eklemesine veya çıkarmasına olanak tanır. - Yeni
setCustomAnimations()
aşırı yükleme yöntemi, giriş/çıkış işlemleri için ve özellikle de arka yığını açarken çalışacak belirli animasyon kaynakları ayarlamanıza olanak tanır. Mevcut uygulama, geri yığını başlatırken parçaların farklı davranışlarını hesaba katmaz.
- Yeni
- ActivityInfo ve ApplicationInfo'daki ekran boyutu bilgileri
ActivityInfo
,configChanges
uygulamasına bit maskeleri olarakCONFIG_SCREEN_SIZE
veCONFIG_SMALLEST_SCREEN_SIZE
ekler. Bit'ler, bir Etkinliğin ekran boyutunu ve en küçük ekran boyutunu işleyip işleyemediğini gösterir.ApplicationInfo
, uygulama manifest dosyasındaki karşılık gelen<supports-screens>
özelliklerinden türetilenlargestWidthLimitDp
,compatibleWidthLimitDp
verequiresSmallestWidthDp
alanlarını ekler.
- WindowManager'dan görüntüleme boyutunu alma yardımcıları
getSize()
vegetRectSize()
adlı yeni yöntemler, uygulamaların ekranın ham boyutunu almasını sağlar.
- Yeni herkese açık "holografik" stiller
- Platformda metin, işlem çubuğu widget'ları, sekmeleri ve daha fazlası için herkese açık çeşitli "holografik" stiller gösteriliyor. Tam liste için
R.style
sayfasını ziyaret edin.
- Platformda metin, işlem çubuğu widget'ları, sekmeleri ve daha fazlası için herkese açık çeşitli "holografik" stiller gösteriliyor. Tam liste için
LocalActivityManager
,ActivityGroup
veLocalActivityManager
desteği sonlandırıldı- Yeni uygulamalar, bu sınıflar yerine Fragments (Fragment) kullanmalı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 (API düzeyi 4) ile uyumlu bir sürümünü sağlar.
- Android 3.0 (API düzeyi 11) veya sonraki sürümlere göre geliştirilen uygulamalarda sekmeler, genellikle kullanıcı arayüzünde yeni
ActionBar.newTab()
ve sekmelerin işlem çubuğu alanına yerleştirilmesi için ilgili API'ler kullanılarak sunulur.
Medya çerçevesi
- Platformun medya sağlayıcısını (
MediaStore
) kullanan uygulamalar artık medya verilerini doğrudan çıkarılabilir SD karttan okuyabilir (cihaz tarafından desteklendiği durumlarda). Uygulamalar, MTP API'yi kullanarak doğrudan SD kart dosyalarıyla da etkileşimde bulunabilir.
Grafik
- Point ve PointF'deki ayrıştırılabilir yardımcı programlar
Point
vePointF
sınıfları artıkParcelable
arayüzünü ve yardımcı program yöntemlerinidescribeContents()
,readFromParcel()
vewriteToParcel()
içeriyor.
IME çerçevesi
- Değiştirici tuşların mevcut durumunu almak için yeni
getModifiers()
yöntemi.
USB çerçevesi
- Cihaz için ham USB tanımlayıcılarını almak için yeni
getRawDescriptors()
yöntemi. Bu yöntemi, doğrudan üst düzey API'ler aracılığıyla desteklenmeyen tanımlayıcılara erişmek için kullanabilirsiniz.
Ağ
- Ağ türü sabitleri
ConnectivityManager
,TYPE_ETHERNET
veTYPE_BLUETOOTH
sabit değerlerini ekler.
Telefon Hizmeti
- Yeni
NETWORK_TYPE_HSPAP
ağ türü sabiti.
Temel yardımcı programlar
- Parçalanabilir yardımcı programlar
Parcelable.ClassLoaderCreator
adlı yeni arayüz, uygulamanın nesnenin oluşturulduğu ClassLoader'ı almasını sağlar.ParcelFileDescriptor
nesnelerini yönetmek için yeniadoptFd
,dup()
vefromFd()
.
- Bağlayıcı ve IBinder
Binder
veIBinder
'teki yenidumpAsync()
yöntemi, uygulamaların belirtilen bir dosyaya döküm oluşturabilmesini sağlayarak hedefin eşzamansız olarak yürütülmesini sağlar.- Yeni
IBinder
protokolü işlem koduTWEET_TRANSACTION
, uygulamaların hedef nesneye tweet göndermesine olanak tanır.
Yeni özellik sabitleri
Platform, Google Play gibi harici varlıkları gerekli donanım ve yazılım özellikleri hakkında bilgilendirmek için uygulama manifest dosyalarında bildirebileceğiniz yeni donanım özelliği sabitleri ekler. Bunları ve diğer özellik sabitlerini <uses-feature>
manifest öğelerinde açıklarsınız.
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 koşullar için özellik sabitleri
Android 3.2, uygulamaların yatay yönde mi, dikey yönde mi yoksa her iki yönde mi görüntüleme gerektirdiklerini belirtmelerini sağlayan yeni özellik sabitleri sunar. Bu sabit değerlerin belirtilmesi, uygulamanın ilgili yönü sunmayan bir cihaza yüklenmemesi gerektiğini gösterir. Bunun aksine, sabit değerlerden biri veya her ikisi de bildirilmezse uygulamanın beyan edilmeyen yönler için bir tercihinin olmadığını ve bunları sunmayan bir cihaza yüklenebileceğini gösterir.
android.hardware.screen.landscape
— Uygulama yatay yönde ekran gerektirir.android.hardware.screen.portrait
— Uygulama dikey yönde ekran gerektirir.
Hem yatay hem de dikey yönlerde düzgün çalışan tipik bir uygulamanın yön şartı beyan etmesi gerekmez. Bunun yerine, televizyon için tasarlanmış bir uygulama gibi öncelikli olarak bir yön için tasarlanmış bir uygulama, bu yönü sağlamayan cihazlarda kullanılamadığını garanti etmek için sabit değerlerden birini belirtebilir.
Manifest isteğinde tanımlanan herhangi bir etkinlik,
android:screenOrientation
özelliğini kullanarak belirli bir yönde çalıştırılıyorsa 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ı izlemesi ile emüle edilmiş çoklu dokunma girişi desteği gerektirir.android.hardware.faketouch.multitouch.jazzhand
— Uygulama, beş veya daha fazla noktanın ayrı izleme özelliğiyle emüle edilmiş çoklu dokunma girişi desteği gerektirir.
API Farkları Raporu
Android 3.2'deki (API Düzeyi 13) tüm API değişikliklerinin ayrıntılı görünümü için API Farklılıkları 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" olarak adlandırılan bu tanımlayıcı, sistemin, uygulamayı yüklemeden önce uygulamanın sistemle uyumlu olup olmadığını doğru şekilde belirlemesine olanak tanır.
Uygulamanızda Android 3.2'de sunulan API'leri 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 uygulama manifestindeki <uses-sdk>
öğesine bir android:minSdkVersion="13"
özelliği de eklemeniz gerekebilir.
Daha fazla bilgi için API Düzeyi nedir?