Android 14 memperkenalkan fitur dan API yang hebat untuk developer. Berikut ini bantuan untuk mempelajari fitur-fitur yang tersedia untuk aplikasi Anda, serta mulai menggunakan API yang terkait.
Untuk melihat daftar mendetail tentang API yang ditambahkan, diubah, dan dihapus, baca laporan perbedaan API. Untuk mengetahui detail tentang API yang ditambahkan, buka referensi API Android — untuk Android 14, cari API yang ditambahkan di API level 34. Untuk mempelajari area tempat perubahan platform dapat memengaruhi aplikasi Anda, pastikan untuk memeriksa perubahan perilaku Android 14 untuk aplikasi yang menargetkan Android 14 dan untuk semua aplikasi.
Internasionalisasi
Preferensi bahasa per aplikasi
Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with these additional capabilities:
Automatically generate an app's
localeConfig
: Starting with Android Studio Giraffe Canary 7 and AGP 8.1.0-alpha07, you can configure your app to support per-app language preferences automatically. Based on your project resources, the Android Gradle plugin generates theLocaleConfig
file and adds a reference to it in the final manifest file, so you no longer have to create or update the file manually. AGP uses the resources in theres
folders of your app modules and any library module dependencies to determine the locales to include in theLocaleConfig
file.Dynamic updates for an app's
localeConfig
: Use thesetOverrideLocaleConfig()
andgetOverrideLocaleConfig()
methods inLocaleManager
to dynamically update your app's list of supported languages in the device's system settings. Use this flexibility to customize the list of supported languages per region, run A/B experiments, or provide an updated list of locales if your app utilizes server-side pushes for localization.App language visibility for input method editors (IMEs): IMEs can utilize the
getApplicationLocales()
method to check the language of the current app and match the IME language to that language.
Grammatical Inflection API
Tiga miliar orang menggunakan bahasa bergender: bahasa yang kategori gramatikalnya—seperti kata benda, kata kerja, kata sifat, dan preposisi—diterapkan dengan gender orang dan objek yang Anda ajak bicara atau Anda bicarakan. Secara tradisional, banyak bahasa bergender menggunakan gender gramatikal maskulin sebagai gender default atau generik.
Menjangkau pengguna dalam gender gramatikal yang salah, seperti menyapa perempuan dengan gender gramatikal yang maskulin, dapat memberi dampak negatif pada performa dan sikap mereka. Sebaliknya, UI dengan bahasa yang mencerminkan gender gramatikal pengguna dengan benar dapat meningkatkan interaksi pengguna dan memberikan pengalaman pengguna yang lebih personal dan terdengar alami.
To help you build a user-centric UI for gendered languages, Android 14 introduces the Grammatical Inflection API, which lets you add support for grammatical gender without refactoring your app.
Preferensi regional
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.


Aksesibilitas
Penskalaan font non-linear ke 200%
Mulai Android 14, sistem mendukung penskalaan font hingga 200%, yang memberikan opsi aksesibilitas tambahan kepada pengguna yang mengalami gangguan penglihatan, sesuai dengan Pedoman Aksesibilitas Konten Web (WCAG).
Agar elemen teks besar di layar tidak diskalakan terlalu besar, sistem akan menerapkan kurva penskalaan non-linear. Strategi penskalaan ini berarti teks besar tidak diskalakan pada kecepatan yang sama dengan teks yang lebih kecil. Penskalaan font non-linear membantu mempertahankan hierarki proporsional antara elemen dengan ukuran yang berbeda, sekaligus memitigasi masalah dengan penskalaan teks linear pada derajat yang tinggi (seperti teks terpotong atau teks yang menjadi lebih sulit dibaca karena ukuran layar yang sangat besar).
Menguji aplikasi dengan penskalaan font nonlinear

Jika Anda sudah menggunakan unit piksel (sp) yang diskalakan untuk menentukan ukuran teks, opsi tambahan dan peningkatan penskalaan ini akan diterapkan secara otomatis ke teks di aplikasi Anda. Namun, Anda tetap harus melakukan pengujian UI dengan ukuran font maksimum yang diaktifkan (200%) untuk memastikan aplikasi Anda menerapkan ukuran font dengan benar dan dapat mengakomodasi ukuran font yang lebih besar tanpa memengaruhi kegunaan.
Untuk mengaktifkan ukuran font 200%, ikuti langkah-langkah berikut:
- Buka aplikasi Settings dan buka Accessibility > Display size and text.
- Untuk opsi Font size, ketuk ikon plus (+) hingga setelan ukuran font maksimum diaktifkan, seperti yang ditunjukkan dalam gambar yang menyertai bagian ini.
Menggunakan satuan piksel yang diskalakan (sp) untuk ukuran teks
Ingatlah untuk selalu menentukan ukuran teks dalam unit sp. Saat aplikasi Anda menggunakan unit sp, Android dapat menerapkan ukuran teks pilihan pengguna dan menskalakannya dengan benar.
Jangan gunakan unit sp untuk padding atau menentukan tinggi tampilan dengan asumsi padding implisit: dengan penskalaan font non-linear, dimensi sp mungkin tidak proporsional, sehingga 4sp + 20sp mungkin tidak sama dengan 24sp.
Mengonversi satuan piksel yang diskalakan (sp)
Gunakan TypedValue.applyDimension()
untuk mengonversi dari unit sp
ke piksel, dan gunakan TypedValue.deriveDimension()
untuk
mengonversi piksel ke sp. Metode ini menerapkan kurva penskalaan
nonlinear yang sesuai secara otomatis.
Hindari persamaan hardcode menggunakan
Configuration.fontScale
atau
DisplayMetrics.scaledDensity
. Karena penskalaan font
nonlinear, kolom scaledDensity
tidak lagi akurat. fontScale
harus digunakan untuk tujuan informasi hanya karena font tidak lagi
diskalakan dengan satu nilai skalar.
Menggunakan unit sp untuk lineHeight
Selalu tentukan android:lineHeight
menggunakan unit sp, bukan
dp, sehingga tinggi baris diskalakan bersama dengan teks Anda. Jika tidak, jika teks
Anda adalah sp, tetapi lineHeight
Anda dalam dp atau px, teks tidak akan diskalakan dan terlihat sempit.
TextView otomatis mengoreksi lineHeight
sehingga proporsi
yang Anda inginkan dipertahankan, tetapi hanya jika textSize
dan lineHeight
ditentukan dalam satuan sp.
Kamera dan media
Ultra HDR untuk gambar

Android 14 menambahkan dukungan untuk gambar Rentang Dinamis Tinggi (HDR) yang mempertahankan lebih banyak informasi dari sensor saat mengambil foto, yang memungkinkan warna yang cerah dan kontras yang lebih besar. Android menggunakan format Ultra HDR, yang sepenuhnya kompatibel dengan gambar JPEG, sehingga aplikasi dapat berinteraksi dengan lancar dengan gambar HDR, menampilkannya dalam Rentang Dinamis Standar (SDR) sesuai kebutuhan.
Merender gambar ini di UI dalam HDR dilakukan secara otomatis oleh framework
saat aplikasi Anda memilih untuk menggunakan UI HDR untuk Jendela Aktivitasnya, baik melalui entri manifes atau saat runtime dengan memanggil
Window.setColorMode()
. Anda juga dapat mengambil gambar diam Ultra HDR
yang dikompresi di perangkat yang didukung. Dengan lebih banyak warna yang dipulihkan
dari sensor, pengeditan pasca-produksi dapat lebih fleksibel. Gainmap
yang terkait dengan gambar Ultra HDR dapat digunakan untuk merendernya
menggunakan OpenGL atau Vulkan.
Zoom, Fokus, Postview, dan lainnya di ekstensi kamera
Android 14 mengupgrade dan meningkatkan ekstensi kamera, sehingga aplikasi dapat menangani waktu pemrosesan yang lebih lama, yang memungkinkan gambar yang lebih baik menggunakan algoritma yang intensif komputasi seperti fotografi cahaya rendah di perangkat yang didukung. Fitur ini memberi pengguna pengalaman yang lebih andal saat menggunakan kemampuan ekstensi kamera. Contoh peningkatan ini mencakup:
- Estimasi latensi pemrosesan pengambilan gambar diam dinamis memberikan estimasi latensi pengambilan gambar diam yang jauh lebih akurat berdasarkan kondisi lingkungan dan situasi saat ini. Panggil
CameraExtensionSession.getRealtimeStillCaptureLatency()
untuk mendapatkan objekStillCaptureLatency
yang memiliki dua metode estimasi latensi. MetodegetCaptureLatency()
menampilkan estimasi latensi antaraonCaptureStarted
danonCaptureProcessStarted()
, dan metodegetProcessingLatency()
menampilkan estimasi latensi antaraonCaptureProcessStarted()
dan frame akhir yang diproses yang tersedia. - Dukungan untuk callback progres pengambilan sehingga aplikasi dapat menampilkan
progres saat ini dari operasi pemrosesan pengambilan gambar diam yang berjalan lama. Anda dapat memeriksa
apakah fitur ini tersedia dengan
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
, dan jika tersedia, Anda akan mengimplementasikan callbackonCaptureProcessProgressed()
, yang memiliki progres (dari 0 hingga 100) yang diteruskan sebagai parameter. Metadata khusus ekstensi, seperti
CaptureRequest.EXTENSION_STRENGTH
untuk menelepon jumlah efek ekstensi, seperti jumlah pemburaman latar belakang denganEXTENSION_BOKEH
.Fitur Postview untuk Still Capture di ekstensi kamera, yang memberikan gambar yang kurang diproses dengan lebih cepat daripada gambar akhir. Jika ekstensi telah meningkatkan latensi pemrosesan, gambar pasca-tampilan dapat diberikan sebagai placeholder untuk meningkatkan UX dan diganti nanti dengan gambar akhir. Anda dapat memeriksa apakah fitur ini tersedia dengan
CameraExtensionCharacteristics.isPostviewAvailable
. Kemudian, Anda dapat meneruskanOutputConfiguration
keExtensionSessionConfiguration.setPostviewOutputConfiguration
.Dukungan untuk
SurfaceView
yang memungkinkan jalur rendering pratinjau yang lebih dioptimalkan dan hemat daya.Dukungan untuk ketuk untuk memfokuskan dan melakukan zoom selama penggunaan ekstensi.
Zoom dalam sensor
Jika REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
di
CameraCharacteristics
berisi
SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
, aplikasi Anda
dapat menggunakan kemampuan sensor lanjutan untuk memberikan streaming RAW yang dipangkas dengan piksel
yang sama dengan bidang pandang penuh menggunakan CaptureRequest
dengan target RAW yang memiliki kasus penggunaan streaming yang disetel ke
CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
.
Dengan menerapkan kontrol penggantian permintaan, kamera yang diperbarui memberi pengguna kontrol zoom bahkan sebelum kontrol kamera lainnya siap.
Audio USB lossless
Android 14 mendapatkan dukungan untuk format audio lossless untuk pengalaman
level audiophile melalui headset berkabel USB. Anda dapat membuat kueri perangkat USB untuk
atribut mixer pilihannya, mendaftarkan pemroses untuk perubahan pada atribut
mixer pilihan, dan mengonfigurasi atribut mixer menggunakan
class AudioMixerAttributes
. Class ini mewakili
format, seperti mask saluran, frekuensi sampel, dan perilaku mixer audio. Class
ini memungkinkan audio dikirim langsung, tanpa pencampuran,
penyesuaian volume, atau efek pemrosesan.
Alat dan produktivitas developer
Credential Manager
Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.
Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.
For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.
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.
Update OpenJDK 17
Android 14 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases, including both library updates and Java 17 language support for app and platform developers.
The following features and improvements are included:
- Updated approximately 300
java.base
classes to Java 17 support. - Text Blocks, which introduce multi-line string literals to the Java programming language.
- Pattern Matching for instanceof, which allows an object to
be treated as having a specific type in an
instanceof
without any additional variables. - Sealed classes, which allow you restrict which classes and interfaces can extend or implement them.
Thanks to Google Play system updates (Project Mainline), over 600 million devices are enabled to receive the latest Android Runtime (ART) updates that include these changes. This is part of our commitment to give apps a more consistent, secure environment across devices, and to deliver new features and capabilities to users independent of platform releases.
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Peningkatan untuk app store
Android 14 memperkenalkan beberapa PackageInstaller
API yang
memungkinkan app store meningkatkan pengalaman pengguna mereka.
Meminta persetujuan penginstalan sebelum mendownload
Menginstal atau mengupdate aplikasi mungkin memerlukan persetujuan pengguna.
Misalnya, saat penginstal yang menggunakan izin
REQUEST_INSTALL_PACKAGES
mencoba menginstal
aplikasi baru. Pada versi Android sebelumnya, app store hanya dapat meminta persetujuan pengguna
setelah APK ditulis ke sesi penginstalan dan
sesi berkomitmen.
Mulai Android 14, metode requestUserPreapproval()
memungkinkan penginstal meminta persetujuan pengguna sebelum melakukan sesi
penginstalan. Peningkatan ini memungkinkan app store menunda download APK apa pun hingga
setelah penginstalan disetujui oleh pengguna. Selain itu, setelah pengguna
menyetujui penginstalan, app store dapat mendownload dan menginstal aplikasi di
latar belakang tanpa mengganggu pengguna.
Mengklaim tanggung jawab untuk update mendatang
Metode setRequestUpdateOwnership()
memungkinkan penginstal
memberi tahu sistem bahwa penginstal bermaksud bertanggung jawab atas update mendatang
untuk aplikasi yang diinstalnya. Kemampuan ini memungkinkan penerapan
kepemilikan update, yang berarti bahwa hanya pemilik update yang diizinkan
untuk menginstal update otomatis ke aplikasi. Penerapan
kepemilikan update membantu memastikan bahwa pengguna hanya menerima update dari app store
yang diharapkan.
Penginstal lainnya, termasuk yang menggunakan izin
INSTALL_PACKAGES
, harus menerima persetujuan eksplisit
pengguna untuk menginstal update. Jika pengguna memutuskan untuk melanjutkan update dari sumber lain, kepemilikan update akan hilang.
Mengupdate aplikasi pada waktu yang tidak terlalu mengganggu
App store biasanya ingin menghindari update aplikasi yang aktif digunakan karena hal ini menyebabkan proses aplikasi yang sedang berjalan dihentikan, yang berpotensi mengganggu aktivitas pengguna.
Mulai Android 14, InstallConstraints
API
memberi penginstal cara untuk memastikan update aplikasi mereka terjadi pada
momen yang tepat. Misalnya, app store dapat memanggil metode
commitSessionAfterInstallConstraintsAreMet()
untuk
memastikan update hanya dilakukan saat pengguna tidak lagi
berinteraksi dengan aplikasi yang dimaksud.
Menginstal pemisahan opsional dengan lancar
Dengan APK terpisah, fitur aplikasi dapat dikirimkan dalam file APK terpisah,
bukan sebagai APK monolitik. APK terpisah memungkinkan app store mengoptimalkan
pengiriman berbagai komponen aplikasi. Misalnya, app store dapat mengoptimalkan
berdasarkan properti perangkat target. PackageInstaller
API telah mendukung pemisahan sejak
diperkenalkan di API level 22.
Di Android 14, metode setDontKillApp()
memungkinkan
penginstal menunjukkan bahwa proses aplikasi yang sedang berjalan tidak boleh dihentikan saat
pemisahan baru diinstal. App store dapat menggunakan fitur ini untuk menginstal
fitur baru aplikasi dengan lancar ketika pengguna sedang menggunakan aplikasi.
Paket metadata aplikasi
Starting in Android 14, the Android package installer lets you specify app metadata, such as data safety practices, to include on app store pages such as Google Play.
Mendeteksi kapan pengguna mengambil screenshot perangkat
Untuk menciptakan pengalaman yang lebih standar dalam mendeteksi screenshot, Android 14 memperkenalkan API deteksi screenshot yang menjaga privasi. API ini memungkinkan aplikasi mendaftarkan callback per aktivitas. Callback ini dipanggil, dan pengguna akan diberi tahu saat pengguna mengambil screenshot ketika aktivitas itu terlihat.
Pengalaman pengguna
Tindakan kustom Sharesheet dan peringkat yang ditingkatkan
Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users.
Add custom actions
With Android 14, your app can add custom actions to the system sharesheet it invokes.

Improve ranking of Direct Share targets
Android 14 uses more signals from apps to determine the ranking of the direct share targets to provide more helpful results for the user. To provide the most useful signal for ranking, follow the guidance for improving rankings of your Direct Share targets. Communication apps can also report shortcut usage for outgoing and incoming messages.

Dukungan untuk animasi bawaan dan kustom untuk Kembali Prediktif
Android 13 memperkenalkan animasi "kembali ke layar utama" prediktif di balik opsi developer. Saat digunakan pada aplikasi yang didukung dengan opsi developer yang diaktifkan, menggeser kembali akan menampilkan animasi yang menunjukkan bahwa gestur kembali akan menutup aplikasi untuk kembali ke layar utama.
Android 14 menyertakan beberapa peningkatan dan panduan baru untuk Kembali Prediktif:
- Anda dapat menetapkan
android:enableOnBackInvokedCallback=true
untuk mengaktifkan animasi sistem kembali prediktif per Aktivitas, bukan untuk seluruh aplikasi. - Kami telah menambahkan animasi sistem baru untuk menyertai animasi "kembali ke layar utama" dari Android 13. Animasi sistem yang baru terdiri dari lintas aktivitas dan lintas tugas, yang Anda dapatkan secara otomatis setelah bermigrasi ke Kembali Prediktif.
- Kami telah menambahkan animasi Komponen Material baru untuk Sheet bawah, Sheet samping, dan Penelusuran.
- Kami telah membuat panduan desain untuk membuat animasi dan transisi kustom dalam aplikasi.
- Kami telah menambahkan API baru untuk mendukung animasi transisi kustom dalam aplikasi:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Gunakan
overrideActivityTransition
, bukanoverridePendingTransition
, untuk transisi yang merespons saat pengguna menggeser kembali.
Dengan rilis pratinjau Android 14 ini, semua fitur Kembali Prediktif tetap berada di balik opsi developer. Lihat panduan developer untuk memigrasikan aplikasi ke kembali prediktif, serta panduan developer untuk membuat transisi kustom dalam aplikasi.
Penggantian per aplikasi produsen perangkat layar besar
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.
Penggantian per aplikasi pengguna perangkat layar besar
Per-app overrides change the behavior of apps on large screen devices. For example, the OVERRIDE_MIN_ASPECT_RATIO_LARGE
device manufacturer override sets the app aspect ratio to 16:9 regardless of the app's configuration.
Android 14 QPR1 enables users to apply per‑app overrides by means of a new settings menu on large screen devices.
Berbagi layar aplikasi
Berbagi layar aplikasi memungkinkan pengguna berbagi jendela aplikasi, bukan seluruh layar perangkat selama perekaman konten layar.
Dengan berbagi layar aplikasi, status bar, menu navigasi, notifikasi, dan elemen UI sistem lainnya dikecualikan dari tampilan bersama. Hanya konten aplikasi yang dipilih yang dibagikan.
Berbagi layar aplikasi meningkatkan produktivitas dan privasi dengan memungkinkan pengguna menjalankan beberapa aplikasi, tetapi membatasi berbagi konten ke satu aplikasi.
Smart Reply yang didukung LLM di Gboard pada Pixel 8 Pro
Di perangkat Pixel 8 Pro dengan Feature Drop Desember, developer dapat mencoba smart reply berkualitas lebih tinggi di Gboard yang didukung oleh Model Bahasa Besar (LLM) di perangkat yang berjalan di Google Tensor.
Fitur ini tersedia sebagai pratinjau terbatas untuk bahasa Inggris Amerika Serikat di WhatsApp, Line, dan KakaoTalk. Fitur ini memerlukan penggunaan perangkat Pixel 8 Pro dengan Gboard sebagai keyboard Anda.
Untuk mencobanya, aktifkan fitur ini terlebih dahulu di Setelan > Opsi Developer > Setelan AICore > Aktifkan AIcore Persistent.
Selanjutnya, buka percakapan di aplikasi yang didukung untuk melihat Smart Reply yang didukung LLM di bilah saran Gboard sebagai respons terhadap pesan masuk.
Grafik
Jalur dapat dikueri dan dapat di-interpola
Path
API Android adalah mekanisme yang andal dan fleksibel untuk
membuat dan merender grafik vektor, dengan kemampuan untuk membuat goresan atau mengisi
jalur, membuat jalur dari segmen garis atau kurva kuadrat atau kubik, melakukan
operasi boolean untuk mendapatkan bentuk yang lebih kompleks, atau semuanya
secara bersamaan. Salah satu keterbatasannya adalah kemampuan untuk mengetahui apa yang sebenarnya ada di
objek Path; bagian dalam objek bersifat buram bagi pemanggil setelah dibuat.
Untuk membuat Path
, panggil metode seperti
moveTo()
, lineTo()
, dan
cubicTo()
untuk menambahkan segmen jalur. Namun, belum ada cara untuk menanyakan kepada jalur tersebut tentang segmennya, jadi Anda harus menyimpan informasi tersebut pada waktu pembuatan.
Mulai Android 14, Anda dapat mengkueri jalur untuk mencari tahu apa yang ada di dalamnya.
Pertama, Anda perlu mendapatkan objek PathIterator
menggunakan
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();
Selanjutnya, Anda dapat memanggil PathIterator
untuk melakukan iterasi melalui segmen
satu per satu, mengambil semua data yang diperlukan untuk setiap segmen. Contoh ini
menggunakan objek PathIterator.Segment
, yang mengemas data
untuk Anda:
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
juga memiliki versi next()
yang tidak mengalokasikan, tempat Anda dapat meneruskan
buffer untuk menyimpan data titik.
Salah satu kasus penggunaan yang penting untuk mengkueri data Path
adalah interpolasi. Misalnya,
Anda mungkin ingin menganimasikan (atau mengubah) antara dua jalur berbeda. Untuk
lebih menyederhanakan kasus penggunaan tersebut, Android 14 juga menyertakan
metode interpolate()
di Path
. Dengan asumsi bahwa kedua jalur memiliki
struktur internal yang sama, metode interpolate()
akan membuat Path
baru
dengan hasil interpolasi tersebut. Contoh ini menampilkan jalur yang bentuknya
setengah (interpolasi linier 0,5) antara path
dan 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); }
Library graphics-path Jetpack juga memungkinkan API serupa untuk versi Android yang lebih lama.
Mesh kustom dengan shader fragmen dan vertex
Android telah lama mendukung mesh segitiga gambar dengan bayangan kustom, tetapi format mesh input telah dibatasi untuk beberapa kombinasi atribut yang telah ditentukan. Android 14 menambahkan dukungan untuk mesh kustom, yang dapat didefinisikan sebagai segitiga atau strip segitiga, dan dapat, secara opsional, diindeks. Mesh ini ditentukan dengan atribut kustom, langkah vertex, beragam, serta shader vertex dan fragmen yang ditulis dalam AGSL.
Vertex shader menentukan variasi, seperti posisi dan warna, sedangkan
fragment shader secara opsional dapat menentukan warna untuk piksel, biasanya dengan
menggunakan variasi yang dibuat oleh vertex shader. Jika warna disediakan oleh shader fragmen, warna tersebut akan digabungkan dengan warna Paint
saat ini menggunakan mode gabungan yang dipilih saat menggambar mesh. Seragam dapat diteruskan
ke shader fragmen dan vertex untuk fleksibilitas tambahan.
Perender buffer hardware untuk Canvas
Untuk membantu dalam penggunaan Canvas
API Android untuk menggambar
akselerasi hardware ke HardwareBuffer
, Android 14
memperkenalkan HardwareBufferRenderer
. API ini
sangat berguna jika kasus penggunaan Anda melibatkan komunikasi dengan
komponer sistem melalui SurfaceControl
untuk gambar
dengan latensi rendah.