Android 14, geliştiriciler için harika özellikler ve API'ler sunar. Aşağıdakiler, uygulamalarınızın özelliklerini öğrenmenize ve ilgili API'leri kullanmaya başlamanıza yardımcı olur.
Eklenen, değiştirilen ve kaldırılan API'lerin ayrıntılı listesi için API fark raporunu okuyun. Eklenen API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Android 14 için API düzeyi 34'e eklenen API'leri bulun. Platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 14'ü hedefleyen uygulamalar ve tüm uygulamalar için Android 14 davranış değişikliklerine göz atmayı unutmayın.
Uluslararası hale getirme
Uygulamaya özgü dil tercihleri
Android 14, Android 13'te (API düzeyi 33) kullanıma sunulan uygulamaya özgü dil özelliklerini aşağıdaki ek özelliklerle zenginleştirir:
Uygulamaların
localeConfig
öğelerini otomatik olarak oluştur: Android Studio Giraffe Canary 7 ve AGP 8.1.0-alpha07 sürümlerinden başlayarak, uygulamanızı uygulamaya özgü dil tercihlerini otomatik olarak destekleyecek şekilde yapılandırabilirsiniz. Android Gradle eklentisi, proje kaynaklarınıza bağlı olarakLocaleConfig
dosyasını oluşturur ve nihai manifest dosyasına bir referans ekler. Böylece artık dosyayı manuel olarak oluşturmanız veya güncellemeniz gerekmez. AGP,LocaleConfig
dosyasına dahil edilecek yerel ayarları belirlemek için uygulama modüllerinizinres
klasörlerindeki kaynakları ve tüm kitaplık modülü bağımlılıklarını kullanır.Uygulamaların
localeConfig
sürümleri için dinamik güncellemeler:LocaleManager
sayfasındasetOverrideLocaleConfig()
vegetOverrideLocaleConfig()
yöntemlerini kullanarak cihazın sistem ayarlarında uygulamanızın desteklenen diller listesini dinamik olarak güncelleyin. Desteklenen dillerin listesini bölgeye göre özelleştirmek, A/B denemeleri çalıştırmak veya uygulamanız yerelleştirme için sunucu tarafı aktarmaları kullanıyorsa güncellenmiş bir yerel ayar listesi sağlamak için bu esnekliği kullanabilirsiniz.Giriş yöntemi düzenleyicileri (IME'ler) için uygulama dili görünürlüğü: IME'ler, geçerli uygulamanın dilini kontrol etmek ve IME dilini bu dille eşleştirmek için
getApplicationLocales()
yöntemini kullanabilir.
Dilbilgisi Çekim API'sı
3 milyar kişi cinsiyete göre diller konuşuyor: İsimler, fiiller, sıfatlar ve edatlar gibi dil bilgisi kategorilerinin, konuştuğunuz veya bahsettiğiniz insanların ve nesnelerin cinsiyetine göre yön değiştirdiği diller. Geleneksel olarak birçok cinsiyete göre dil, varsayılan veya genel cinsiyet olarak eril dil bilgisi kurallarını kullanır.
Dil bilgisi açısından yanlış cinsiyetteki kullanıcılara hitap etmek (ör. kadınlara eril dil bilgisi cinsiyetine göre hitap etmek), performans ve tutumlarını olumsuz yönde etkileyebilir. Buna karşılık, kullanıcının dil bilgisi cinsiyetini doğru yansıtan bir dil kullanan kullanıcı arayüzü, kullanıcı etkileşimini iyileştirebilir ve daha kişiselleştirilmiş ve doğal bir kullanıcı deneyimi sunabilir.
Android 14, cinsiyete dayalı diller için kullanıcı odaklı bir kullanıcı arayüzü oluşturmanıza yardımcı olmak amacıyla, uygulamanızı yeniden düzenlemeden dil bilgisi desteği eklemenize olanak tanıyan Grammical Inffaction API'yi kullanıma sunuyor.
Bölgeye özgü tercihler
Regional preferences enable users to personalize temperature units, the first day of the week, and numbering systems. A European living in the United States might prefer temperature units to be in Celsius rather than Fahrenheit and for apps to treat Monday as the beginning of the week instead of the US default of Sunday.
New Android Settings menus for these preferences provide users with a
discoverable and centralized location to change app preferences. These
preferences also persist through backup and restore. Several APIs and
intents—such as
getTemperatureUnit
and
getFirstDayOfWeek
—
grant your app read access to user preferences, so your app can adjust how it
displays information. You can also register a
BroadcastReceiver
on
ACTION_LOCALE_CHANGED
to handle locale configuration changes when regional preferences change.
To find these settings, open the Settings app and navigate to System > Languages & input > Regional preferences.
Erişilebilirlik
Doğrusal olmayan yazı tipi boyutunu %200'e ölçeklendirme
Sistem, Android 14'ten itibaren %200'e kadar yazı tipi ölçeklendirmesini destekleyerek az gören kullanıcılara Web İçeriği Erişilebilirlik Yönergeleri (WCAG) ile uyumlu ek erişilebilirlik seçenekleri sağlar.
Sistem, ekrandaki büyük metin öğelerinin çok büyük ölçeklenmesini önlemek için doğrusal olmayan bir ölçeklendirme eğrisi uygular. Bu ölçeklendirme stratejisi, büyük metinlerin daha küçük metinlerle aynı hızda ölçeklendirilmeyeceği anlamına gelir. Doğrusal olmayan yazı tipi ölçeklendirme, farklı boyutlardaki öğeler arasındaki orantısal hiyerarşinin korunmasına yardımcı olurken yüksek derecelerde doğrusal metin ölçeklendirmeyle (metinlerin kesilmesi veya çok büyük ekran boyutları nedeniyle metnin okunması zorlaşması gibi) sorunları da azaltır.
Doğrusal olmayan yazı tipi ölçeklendirme ile uygulamanızı test etme
Metin boyutlandırmasını tanımlamak için zaten ölçeklendirilmiş piksel (sp) birimleri kullanıyorsanız, bu ek seçenekler ve ölçeklendirme iyileştirmeleri uygulamanızdaki metne otomatik olarak uygulanır. Ancak, uygulamanızın yazı tipi boyutlarını doğru bir şekilde uyguladığından ve daha büyük yazı tipi boyutlarının kullanılabilirliği etkilemeden kullanabilmesini sağlamak için yine de maksimum yazı tipi boyutunu (%200) etkinleştirerek kullanıcı arayüzü testleri gerçekleştirmeniz gerekir.
Yazı tipi boyutunu% 200 etkinleştirmek için aşağıdaki adımları uygulayın:
- Ayarlar uygulamasını açın ve Erişilebilirlik > Görüntü boyutu ve metin'e gidin.
- Yazı tipi boyutu seçeneği için bu bölüme eşlik eden resimde gösterildiği gibi maksimum yazı tipi boyutu ayarı etkinleştirilene kadar artı (+) simgesine dokunun.
Metin boyutları için ölçeklendirilmiş piksel (sp) birimleri kullanma
Metin boyutlarını her zaman sp birimleri cinsinden belirtmeyi unutmayın. Uygulamanız sp birimleri kullandığında, Android kullanıcının tercih ettiği metin boyutunu uygulayabilir ve uygun şekilde ölçeklendirebilir.
Dolgu için sp birimleri kullanmayın veya örtülü dolgunun varsayıldığında görünüm yüksekliklerini tanımlamayın: Doğrusal olmayan yazı tipi ölçeklendirme sp boyutları orantılı olmayabilir. Bu nedenle 4 sp + 20 sp, 24 sp'ye eşit olmayabilir.
Ölçeklendirilmiş piksel (sp) birimlerini dönüştürme
sp birimlerinden piksele dönüştürmek için TypedValue.applyDimension()
, pikselleri sp'ye dönüştürmek için TypedValue.deriveDimension()
kullanın. Bu yöntemler, uygun doğrusal olmayan ölçeklendirme eğrisini otomatik olarak uygular.
Configuration.fontScale
veya DisplayMetrics.scaledDensity
kullanarak denklemleri tek tek girmekten kaçının. Yazı tipi ölçeklendirme doğrusal olmadığından scaledDensity
alanı artık doğru değildir. Yazı tipleri artık tek bir skaler değerle ölçeklendirilmediğinden, fontScale
alanı yalnızca bilgi amaçlı kullanılmalıdır.
lineHeight için sp birimleri kullan
android:lineHeight
öğesini her zaman dp yerine sp birimleri kullanarak tanımlayın. Böylece satır yüksekliği metninizle birlikte ölçeklenir. Aksi takdirde, metniniz sp ancak lineHeight
öğeniz dp veya px biçimindeyse ölçeklendirilmez ve sıkışık görünür.
TextView, istediğiniz oranların korunması için lineHeight
öğesini otomatik olarak düzeltir, ancak bunun için hem textSize
hem de lineHeight
sp birimlerinde tanımlanmışsa geçerlidir.
Kamera ve medya
Resimler için ultra HDR
Android 14'te, fotoğraf çekerken sensörden gelen bilgilerin daha fazlasını koruyan Yüksek Dinamik Aralık (HDR) resimler desteklenir. Bu da canlı renkler ve daha fazla kontrast sağlar. Android, JPEG resimlerle tamamen geriye dönük uyumlu olan Ultra HDR biçimini kullanır. Böylece, uygulamaların HDR resimlerle sorunsuz bir şekilde birlikte çalışabilmesini ve bu görüntülerin Standart Dinamik Aralık'ta (SDR) gerektiği şekilde görüntülenmesini sağlar.
Uygulamanız Etkinlik Penceresi için HDR kullanıcı arayüzünü kullanmayı seçtiğinde (manifest girişiyle veya çalışma zamanında Window.setColorMode()
çağrısı yaparak) bu görüntülerin kullanıcı arayüzünde HDR olarak oluşturulması çerçeve tarafından otomatik olarak gerçekleştirilir. Desteklenen cihazlarda sıkıştırılmış Ultra HDR hareketsiz resimler de çekebilirsiniz. Sensörden kurtarılan renk sayısı arttıkça, yayını daha esnek bir şekilde düzenleyebilirsiniz. Ultra HDR görüntülerle ilişkili Gainmap
, bu görüntüleri OpenGL veya Vulkan kullanarak oluşturmak için kullanılabilir.
Kamera uzantılarında Zoom, Focus, Postview ve daha fazlası
Android 14, kamera uzantılarını yeni sürüme geçirip iyileştirerek uygulamaların daha uzun işleme sürelerine olanak tanır. Bu sayede, desteklenen cihazlarda ışığın yeterli olmadığı ortamlarda çekilen fotoğraflar gibi işlem yoğun algoritmalar kullanılarak iyileştirilmiş resimler iyileştirilir. Bu özellikler, kamera uzantısı özelliklerini kullanırken kullanıcılara daha da güçlü bir deneyim sunar. Bu iyileştirmelere örnek olarak aşağıdakiler verilebilir:
- Dinamik hâlâ yakalama işleme gecikmesi tahmini, mevcut düzen ve ortam koşullarına bağlı olarak çok daha doğru şekilde yakalanan gecikme tahminlerini sunar. İki gecikme tahmini yöntemi olan bir
StillCaptureLatency
nesnesi almak içinCameraExtensionSession.getRealtimeStillCaptureLatency()
yöntemini çağırın.getCaptureLatency()
yöntemi,onCaptureStarted
ileonCaptureProcessStarted()
arasındaki tahmini gecikmeyi döndürür.getProcessingLatency()
yöntemi iseonCaptureProcessStarted()
ile mevcut işlenen son kare arasındaki tahmini gecikmeyi döndürür. - Uygulamaların uzun süreli, görüntü almaya devam eden işleme işlemlerinin mevcut ilerlemesini görüntüleyebilmesi için ilerleme geri çağırmalarını yakalama desteği. Bu özelliğin
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
ile kullanılabilir olup olmadığını kontrol edebilir ve mevcutsa ilerleme durumunu (0'dan 100'e) parametre olarak aktaranonCaptureProcessProgressed()
geri çağırmasını uygularsınız. Uzantıya özel meta veriler. Örneğin,
EXTENSION_BOKEH
ile arka plan bulanıklaştırma miktarı gibi uzantı efektinin miktarını eklemek içinCaptureRequest.EXTENSION_STRENGTH
.Kamera uzantılarında, son görüntüden daha az işlenmiş bir görüntüyü daha hızlı sağlayan Görüntü Sonrası Yakalama özelliği. Bir uzantının işleme gecikmesi artarsa kullanıcı deneyimini iyileştirmek için yer tutucu olarak bir görüntüleme sonrası resmi sağlanabilir ve daha sonra nihai resim için değiştirilir. Bu özelliğin
CameraExtensionCharacteristics.isPostviewAvailable
üzerinden kullanıma sunulup sunulmadığını kontrol edebilirsiniz. ArdındanExtensionSessionConfiguration.setPostviewOutputConfiguration
adlı kişiyeOutputConfiguration
iletebilirsiniz.Daha optimize edilmiş ve gücü daha verimli bir şekilde sunan önizleme oluşturma yolunun sunulmasına olanak tanıyan
SurfaceView
desteği.Uzantı kullanımı sırasında odaklanmak ve yakınlaştırmak için dokunma desteği.
Sensör içi yakınlaştırma
When REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
in
CameraCharacteristics
contains
SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
, your app
can use advanced sensor capabilities to give a cropped RAW stream the same
pixels as the full field of view by using a CaptureRequest
with a RAW target that has stream use case set to
CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
.
By implementing the request override controls, the updated camera gives users
zoom control even before other camera controls are ready.
Kayıpsız USB ses
Android 14, USB kablolu kulaklıklar üzerinden ses meraklıları seviyesindeki deneyimler için kayıpsız ses biçimlerini destekliyor. Bir USB cihazı tercih edilen mikser özellikleriyle sorgulayabilir, tercih edilen mikser özelliklerindeki değişiklikler için bir işleyici kaydedebilir ve AudioMixerAttributes
sınıfını kullanarak mikser özelliklerini yapılandırabilirsiniz. Bu sınıf; kanal maskesi, örnek hızı ve ses karıştırıcının davranışı gibi biçimini temsil eder. Sınıf; karıştırma, ses ayarı veya işleme efektleri olmadan sesin doğrudan gönderilmesine olanak tanır.
Geliştirici üretkenliği ve araçları
Kimlik Bilgisi Yöneticisi
Android 14, platform API'si olarak Kimlik Bilgisi Yöneticisi'ni ekler ve Google Play Hizmetleri'ni kullanan bir Jetpack Library aracılığıyla Android 4.4 (API düzeyi 19) cihazlara yönelik ek destek sağlar. Kimlik Bilgisi Yöneticisi, kullanıcı tarafından yapılandırılmış kimlik bilgisi sağlayıcıları aracılığıyla kimlik bilgilerini alan ve depolayan API'lerle kullanıcıların oturum açmasını kolaylaştırmayı amaçlar. Kimlik Bilgisi Yöneticisi, tek bir API'de kullanıcı adı ve şifre, geçiş anahtarları ve birleşik oturum açma çözümleri gibi çoklu oturum açma yöntemlerini destekler.
Geçiş anahtarları birçok avantaj sunar. Örneğin, geçiş anahtarları endüstri standartlarına göre oluşturulur, farklı işletim sistemlerinde ve tarayıcı ekosistemlerinde çalışabilir ve hem web sitelerinde hem de uygulamalarda kullanılabilir.
Daha fazla bilgi için Kimlik Bilgisi Yöneticisi ve geçiş anahtarları belgelerine ve Kimlik Bilgisi Yöneticisi ve geçiş anahtarları hakkındaki blog yayınına bakın.
Health Connect
Health Connect is an on-device repository for user health and fitness data. It allows users to share data between their favorite apps, with a single place to control what data they want to share with these apps.
On devices running Android versions prior to Android 14, Health Connect is available to download as an app on the Google Play store. Starting with Android 14, Health Connect is part of the platform and receives updates through Google Play system updates without requiring a separate download. With this, Health Connect can be updated frequently, and your apps can rely on Health Connect being available on devices running Android 14 or higher. Users can access Health Connect from the Settings in their device, with privacy controls integrated into the system settings.
Health Connect includes several new features in Android 14, such as exercise routes, allowing users to share a route of their workout which can be visualized on a map. A route is defined as a list of locations saved within a window of time, and your app can insert routes into exercise sessions, tying them together. To ensure that users have complete control over this sensitive data, users must allow sharing individual routes with other apps.
For more information, see the Health Connection documentation and the blogpost on What's new in Android Health.
OpenJDK 17 güncellemeleri
Android 14, uygulama ve platform geliştiricileri için hem kitaplık güncellemeleri hem de Java 17 dil desteği dahil olmak üzere Android'in temel kitaplıklarını en son OpenJDK LTS sürümlerindeki özelliklere uygun olacak şekilde yenileme çalışmalarına devam ediyor.
Aşağıdaki özellikler ve iyileştirmeler dahildir:
- Yaklaşık 300
java.base
sınıfı, Java 17 desteği olarak güncellendi. - Metin Blokları, Java programlama diline çok satırlı dize değişmez değerleri kazandırır.
- Örnek için Kalıp Eşleştirme: Bir nesnenin ek değişken olmadan
instanceof
içinde belirli bir türe sahip olarak değerlendirilmesini sağlar. - Gizli sınıflar: Bu özellik, bunları genişletebilecek veya uygulayabilecek sınıfları ve arayüzleri kısıtlamanızı sağlar.
Google Play sistem güncellemeleri (Project Mainline) sayesinde 600 milyondan fazla cihazın, bu değişiklikleri içeren en son Android Runtime (ART) güncellemelerini alabilmesi sağlandı. Bu, uygulamalara tüm cihazlarda daha tutarlı ve güvenli bir ortam sunma ve kullanıcılara platform sürümlerinden bağımsız olarak yeni özellikler ile işlevler sunma taahhüdümüz kapsamındadır.
Java ve OpenJDK, Oracle ve/veya satış ortaklarının ticari markaları veya tescilli ticari markalarıdır.
Uygulama mağazaları için iyileştirmeler
Android 14, uygulama mağazalarının kullanıcı deneyimini iyileştirmesini sağlayan çeşitli PackageInstaller
API'lerini kullanıma sunar.
İndirmeden önce yükleme onayı iste
Bir uygulamayı yüklemek veya güncellemek için kullanıcı onayı gerekebilir.
Örneğin, REQUEST_INSTALL_PACKAGES
iznini kullanan bir yükleyici yeni bir uygulama yüklemeye çalıştığında, uygulama mağazaları yalnızca yükleme oturumuna APK'lar kaydedildikten ve oturum kaydedildikten sonra kullanıcı onayı isteyebilir.
Android 14'ten itibaren requestUserPreapproval()
yöntemi, yükleyicilerin yükleme oturumunu gerçekleştirmeden önce kullanıcı onayı istemesine olanak tanır. Bu iyileştirme sayesinde uygulama mağazası, kullanıcı tarafından onaylanana kadar APK'ların indirilmesini erteleyebilir. Ayrıca, kullanıcı yüklemeyi onayladıktan sonra, uygulama mağazası uygulamayı arka planda indirip, kullanıcının işini kesintiye uğratmadan yükleyebilir.
Gelecekteki güncellemelerle ilgili sorumluluğu üstlenin
setRequestUpdateOwnership()
yöntemi, yükleyicinin sisteme, yüklediği uygulamada gelecekte yapılacak güncellemelerden sorumlu olduğunu belirtmesine olanak tanır. Bu özellik, sahiplik güncellemenin zorunlu kılınmasını sağlar. Diğer bir deyişle, yalnızca güncelleme sahibinin uygulamaya otomatik güncellemeleri yüklemesine izin verilir. Güncelleme sahipliği yaptırımı, kullanıcıların yalnızca beklenen uygulama mağazasından gelen güncellemeleri aldığından emin olmanıza yardımcı olur.
INSTALL_PACKAGES
iznini kullananlar da dahil olmak üzere diğer yükleyicilerin bir güncellemeyi yüklemek için açık kullanıcı onayı alması gerekir. Kullanıcı başka bir kaynaktan güncelleme yaparak devam etmeye karar verirse güncelleme sahipliği kaybolur.
Uygulamaları rahatsız edici olmayan zamanlarda güncelleyin
Uygulama mağazaları genellikle aktif olarak kullanılmakta olan bir uygulamayı güncellemekten kaçınmak ister. Bu güncelleme, uygulamanın çalışan süreçlerinin sonlandırılmasına neden olarak kullanıcının yaptığı işi kesintiye uğratabilir.
Android 14'ten itibaren InstallConstraints
API, yükleyicilere uygulama güncellemelerinin uygun bir anda gerçekleşmesini sağlayacak bir yöntem sunar. Örneğin, bir uygulama mağazası güncellemenin yalnızca kullanıcı artık söz konusu uygulamayla etkileşimde
olmadığında yapıldığından emin olmak için commitSessionAfterInstallConstraintsAreMet()
yöntemini çağırabilir.
İsteğe bağlı bölmeleri sorunsuz şekilde yükleyin
Bölünmüş APK'larla bir uygulamanın özellikleri, monolitik APK olarak değil, ayrı APK dosyalarında sunulabilir. Bölünmüş APK'lar, uygulama mağazalarının farklı uygulama bileşenlerinin sunumunu optimize etmesine olanak tanır. Örneğin, uygulama mağazaları, hedef cihazın özelliklerine göre optimizasyon yapabilir. PackageInstaller
API, API düzeyi 22'de kullanıma sunulduğundan beri bölmeleri desteklemektedir.
Android 14'te setDontKillApp()
yöntemi, yükleyicinin yeni bölmeler yüklendiğinde uygulamanın çalışan işlemlerinin sonlandırılmaması gerektiğini belirtmesini sağlar. Uygulama mağazaları, bir uygulamanın yeni özelliklerini kullanıcı uygulamayı kullanırken sorunsuz bir şekilde yüklemek için bu özelliği kullanabilir.
Uygulama meta veri paketleri
Android paket yükleyici, Android 14'ten itibaren uygulama mağazası sayfalarına eklemek üzere veri güvenliği uygulamaları gibi uygulama meta verilerini belirtmenize olanak tanır.
Kullanıcılar cihaz ekran görüntüsü aldığında bunu algıla
Android 14, ekran görüntülerini algılama konusunda daha standart bir deneyim oluşturmak için gizliliği korumaya yönelik bir ekran görüntüsü algılama API'si sunar. Bu API, uygulamaların geri çağırmaları etkinlik bazında kaydetmesine olanak tanır. Kullanıcı, etkinlik görünür durumdayken ekran görüntüsü aldığında bu geri çağırmalar çağrılır ve kullanıcı bilgilendirilir.
Kullanıcı deneyimi
Sharesheet özel işlemleri ve iyileştirilmiş sıralama
Android 14, sistem paylaşım sayfasını özel uygulama işlemlerini ve kullanıcılar için daha bilgilendirici önizleme sonuçlarını destekleyecek şekilde günceller.
Özel işlemler ekleme
Android 14 ile uygulamanız, çağrı yaptığı sistem paylaşım sayfasına özel işlemler ekleyebilir.
Direct Share hedeflerinin sıralamasını iyileştirme
Android 14, kullanıcıya daha faydalı sonuçlar sunmak amacıyla doğrudan paylaşım hedeflerinin sıralamasını belirlemek için uygulamalardan gelen daha fazla sinyali kullanır. Sıralama için en yararlı sinyali sağlamak üzere Doğrudan Paylaşım hedeflerinizin sıralamasını iyileştirme yönergelerini izleyin. İletişim uygulamaları, giden ve gelen mesajlar için kısayol kullanımını da bildirebilir.
Tahmini Geri Dönme için yerleşik ve özel animasyonlar için destek
Android 13'te, bir geliştirici seçeneğinin arkasında tahmine dayalı eve geri dönüş animasyonu kullanıma sunuldu. Geri kaydırma, geliştirici seçeneği etkin şekilde desteklenen bir uygulamada kullanıldığında, geri kaydırma hareketinin uygulamadan tekrar ana ekrana döndüğünü belirten bir animasyon gösterir.
Android 14, Estimateive Back için birçok iyileştirme ve yeni kılavuz içerir:
android:enableOnBackInvokedCallback=true
'i uygulamanın tamamı yerine Etkinlik başına tahmine dayalı geri sistem animasyonlarını etkinleştirecek şekilde ayarlayabilirsiniz.- Android 13'ten ana ekrana dönüş animasyonuna eşlik edecek yeni sistem animasyonları ekledik. Yeni sistem animasyonları, Estimateive Back'e taşıdıktan sonra otomatik olarak aldığınız çapraz etkinlikler ve görevler arasıdır.
- Alt sayfalar, Yan sayfalar ve Arama için yeni Malzeme Bileşeni animasyonları ekledik.
- Özel uygulama içi animasyonlar ve geçişler oluşturmak için tasarım rehberliği oluşturduk.
- Özel uygulama içi geçiş animasyonlarını desteklemek için yeni API'ler ekledik:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Kullanıcı geri kaydırdığında yanıt veren geçişler için
overridePendingTransition
yerineoverrideActivityTransition
kullanın.
Bu Android 14 önizleme sürümünde tüm Recommendationive Back özellikleri, bir geliştirici seçeneğinin arkasında kalmaya devam edecektir. Uygulamanızı tahmine dayalı geri taşımaya yönelik geliştirici kılavuzunu ve özel uygulama içi geçişler oluşturmayla ilgili geliştirici kılavuzunu inceleyin.
Büyük ekranlı cihaz üreticisinin uygulama bazında geçersiz kılmaları
Per-app overrides enable device manufacturers to change the behavior of apps on large screen devices. For example, the FORCE_RESIZE_APP
override instructs the system to resize the app to fit display dimensions (avoiding size compatibility mode) even if resizeableActivity="false"
is set in the app manifest.
Overrides are intended to improve the user experience on large screens.
New manifest properties enable you to disable some device manufacturer overrides for your app.
Büyük ekran kullanıcısı uygulama başına geçersiz kılmaları
Uygulama bazında geçersiz kılmalar, uygulamaların büyük ekranlı cihazlardaki davranışını değiştirir. Örneğin, OVERRIDE_MIN_ASPECT_RATIO_LARGE
cihaz üreticisi geçersiz kılma ayarı, uygulamanın yapılandırmasından bağımsız olarak uygulama en boy oranını 16:9 olarak ayarlar.
Android 14 QPR1, kullanıcıların büyük ekranlı cihazlarda yeni ayarlar menüsü ile uygulama bazında geçersiz kılmaları uygulamasına olanak tanır.
Uygulama ekran paylaşımı
App screen sharing enables users to share an app window instead of the entire device screen during screen content recording.
With app screen sharing, the status bar, navigation bar, notifications, and other system UI elements are excluded from the shared display. Only the content of the selected app is shared.
App screen sharing improves productivity and privacy by enabling users to run multiple apps but limit content sharing to a single app.
Pixel 8 Pro'daki Gboard'da LLM destekli Akıllı Yanıt
Aralık ayı özellik değişikliğine sahip Pixel 8 Pro cihazlarda geliştiriciler, Google Tensor'da çalışan cihaz üzerinde Büyük Dil Modelleri (LLM) ile desteklenen Gboard'da daha yüksek kaliteli akıllı yanıtları deneyebilirler.
Bu özellik; WhatsApp, Line ve KakaoTalk'ta ABD İngilizcesi için sınırlı bir önizleme olarak kullanılabilir. Bunun için klavyeniz olarak Gboard'un bulunduğu bir Pixel 8 Pro cihaz gerekir.
Denemek için önce Ayarlar > Geliştirici Seçenekleri > AI Core Ayarları > Aicore Persistent'ı Etkinleştir bölümünden özelliği etkinleştirin.
Ardından, gelen mesajlara yanıt olarak Gboard'un öneri şeridinde LLM destekli Akıllı Yanıt'ı görmek için desteklenen bir uygulamada bir sohbet açın.
Grafik
Yollar sorgulanabilir ve birlikte çalışabilirlik
Android's Path
API is a powerful and flexible mechanism for
creating and rendering vector graphics, with the ability to stroke or fill a
path, construct a path from line segments or quadratic or cubic curves, perform
boolean operations to get even more complex shapes, or all of these
simultaneously. One limitation is the ability to find out what is actually in a
Path object; the internals of the object are opaque to callers after creation.
To create a Path
, you call methods such as
moveTo()
, lineTo()
, and
cubicTo()
to add path segments. But there has been no way to
ask that path what the segments are, so you must retain that information at
creation time.
Starting in Android 14, you can query paths to find out what's inside of them.
First, you need to get a PathIterator
object using the
Path.getPathIterator
API:
Kotlin
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
Java
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
Next, you can call PathIterator
to iterate through the segments
one by one, retrieving all of the necessary data for each segment. This example
uses PathIterator.Segment
objects, which packages up the data
for you:
Kotlin
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
Java
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
PathIterator
also has a non-allocating version of next()
where you can pass
in a buffer to hold the point data.
One of the important use cases of querying Path
data is interpolation. For
example, you might want to animate (or morph) between two different paths. To
further simplify that use case, Android 14 also includes the
interpolate()
method on Path
. Assuming the two paths have
the same internal structure, the interpolate()
method creates a new Path
with that interpolated result. This example returns a path whose shape is
halfway (a linear interpolation of .5) between path
and otherPath
:
Kotlin
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
Java
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
The Jetpack graphics-path library enables similar APIs for earlier versions of Android as well.
Köşe noktası ve parça gölgelendiriciler içeren özel örgüler
Android has long supported drawing triangle meshes with custom shading, but the input mesh format has been limited to a few predefined attribute combinations. Android 14 adds support for custom meshes, which can be defined as triangles or triangle strips, and can, optionally, be indexed. These meshes are specified with custom attributes, vertex strides, varying, and vertex and fragment shaders written in AGSL.
The vertex shader defines the varyings, such as position and color, while the
fragment shader can optionally define the color for the pixel, typically by
using the varyings created by the vertex shader. If color is provided by the
fragment shader, it is then blended with the current Paint
color using the blend mode selected when
drawing the mesh. Uniforms can be passed
into the fragment and vertex shaders for additional flexibility.
Tuval için donanım arabelleği oluşturucu
Android 14, HardwareBuffer
'te donanım hızlandırmayla çizim yapmak için Android'in Canvas
API'sini kullanmanıza yardımcı olmak amacıyla HardwareBufferRenderer
'ı kullanıma sundu. Bu API özellikle kullanım alanınızda, düşük gecikmeli çizim için SurfaceControl
üzerinden sistem oluşturucuyla iletişim kurulması gerektiği durumlarda kullanışlıdır.