Ringkasan Fitur dan API

Android 14 memperkenalkan fitur dan API hebat untuk para 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 memperluas fitur bahasa per aplikasi yang diperkenalkan di Android 13 (API level 33) dengan kemampuan tambahan berikut:

  • Otomatis membuat localeConfig aplikasi: Mulai dari Android Studio Giraffe Canary 7 dan AGP 8.1.0-alpha07, Anda dapat mengonfigurasi aplikasi untuk mendukung preferensi bahasa per aplikasi secara otomatis. Berdasarkan resource project, plugin Android Gradle menghasilkan file LocaleConfig dan menambahkan referensi ke file tersebut dalam file manifes akhir, sehingga Anda tidak perlu lagi membuat atau memperbarui file secara manual. AGP menggunakan resource dalam folder res modul aplikasi Anda dan dependensi modul library apa pun untuk menentukan lokalitas yang akan disertakan dalam file LocaleConfig.

  • Update dinamis untuk localeConfig aplikasi: Gunakan metode setOverrideLocaleConfig() dan getOverrideLocaleConfig() di LocaleManager untuk memperbarui secara dinamis daftar bahasa yang didukung aplikasi Anda di setelan sistem perangkat. Gunakan fleksibilitas ini untuk menyesuaikan daftar bahasa yang didukung per region, menjalankan eksperimen A/B, atau memberikan daftar lokalitas yang diupdate jika aplikasi Anda menggunakan push sisi server untuk pelokalan.

  • Visibilitas bahasa aplikasi untuk editor metode input (IME): IME dapat menggunakan metode getApplicationLocales() untuk memeriksa bahasa aplikasi saat ini dan mencocokkan bahasa IME dengan bahasa tersebut.

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.

Guna membantu Anda mem-build UI yang berorientasi pengguna untuk bahasa-bahasa bergender, Android 14 memperkenalkan Grammatical Inflection API, yang memungkinkan Anda menambahkan dukungan untuk gender gramatikal tanpa perlu memfaktorkan ulang aplikasi.

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.

Regional preferences screen in Android system settings.
Temperature options for regional preferences in Android system settings.

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

Aktifkan ukuran font maksimum di setelan aksesibilitas perangkat untuk menguji aplikasi Anda.

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:

  1. Buka aplikasi Settings dan buka Accessibility > Display size and text.
  2. 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

Ilustrasi kualitas gambar Standard Dynamic Range (SDR) versus High Dynamic Range (HDR).

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.

Ekstensi 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:

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

Pengelola Kredensial

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 adalah repositori di perangkat untuk data kesehatan dan kebugaran pengguna. Fitur ini memungkinkan pengguna berbagi data antar-aplikasi favorit mereka, dengan satu tempat untuk mengontrol data yang ingin dibagikan kepada aplikasi ini.

Di perangkat yang menjalankan versi Android sebelum Android 14, Health Connect tersedia untuk didownload sebagai aplikasi di Google Play Store. Mulai Android 14, Health Connect adalah bagian dari platform dan menerima update melalui update sistem Google Play tanpa memerlukan download terpisah. Dengan demikian, Health Connect dapat sering diperbarui, dan aplikasi Anda dapat mengandalkan Health Connect yang tersedia di perangkat yang menjalankan Android 14 atau yang lebih tinggi. Pengguna dapat mengakses Health Connect dari Setelan di perangkat mereka, dengan kontrol privasi yang terintegrasi ke dalam setelan sistem.

Pengguna dapat mulai menggunakan Health Connect tanpa download aplikasi terpisah di perangkat yang menjalankan Android 14 atau yang lebih baru.
Pengguna dapat mengontrol aplikasi mana yang memiliki akses ke data kesehatan dan kebugaran mereka melalui setelan sistem.

Health Connect menyertakan beberapa fitur baru di Android 14, seperti rute olahraga, yang memungkinkan pengguna membagikan rute olahraga mereka yang dapat divisualisasikan di peta. Rute ditentukan sebagai daftar lokasi yang disimpan dalam periode waktu, dan aplikasi Anda dapat menyisipkan rute ke dalam sesi olahraga, yang menggabungkannya bersama-sama. Untuk memastikan pengguna memiliki kontrol penuh atas data sensitif ini, pengguna harus mengizinkan berbagi setiap rute dengan aplikasi lain.

Untuk informasi selengkapnya, lihat dokumentasi Health Connect dan postingan blog tentang Yang baru di Android Health.

Update OpenJDK 17

Android 14 melanjutkan pekerjaan memuat ulang library inti Android agar selaras dengan fitur dalam rilis OpenJDK LTS terbaru, termasuk update library dan dukungan bahasa Java 17 untuk developer aplikasi dan platform.

Fitur dan peningkatan berikut disertakan:

  • Mengupdate sekitar 300 class java.base ke dukungan Java 17.
  • Pemblokiran Teks, yang memperkenalkan literal string multibaris ke bahasa pemrograman Java.
  • Pencocokan Pola untuk instance, yang memungkinkan objek diperlakukan sebagai memiliki jenis tertentu dalam instanceof tanpa variabel tambahan.
  • Class tertutup, yang memungkinkan Anda membatasi class dan antarmuka yang dapat memperluas atau menerapkannya.

Berkat update sistem Google Play (Project Mainline), lebih dari 600 juta perangkat diaktifkan untuk menerima update Android Runtime (ART) terbaru yang menyertakan perubahan ini. Ini adalah bagian dari komitmen kami untuk memberi aplikasi lingkungan yang lebih konsisten dan aman di seluruh perangkat, serta memberikan fitur dan kemampuan baru kepada pengguna, terlepas dari rilis platform.

Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.

Peningkatan untuk app store

Android 14 introduces several PackageInstaller APIs that allow app stores to improve their user experience.

Request install approval before downloading

Installing or updating an app might require user approval. For example, when an installer making use of the REQUEST_INSTALL_PACKAGES permission attempts to install a new app. In prior Android versions, app stores can only request user approval after APKs are written to the install session and the session is committed.

Starting with Android 14, the requestUserPreapproval() method lets installers request user approval before committing the install session. This improvement lets an app store defer downloading any APKs until after the installation has been approved by the user. Furthermore, once a user has approved installation, the app store can download and install the app in the background without interrupting the user.

Claim responsibility for future updates

The setRequestUpdateOwnership() method allows an installer to indicate to the system that it intends to be responsible for future updates to an app it is installing. This capability enables update ownership enforcement, meaning that only the update owner is permitted to install automatic updates to the app. Update ownership enforcement helps to ensure that users receive updates only from the expected app store.

Any other installer, including those making use of the INSTALL_PACKAGES permission, must receive explicit user approval in order to install an update. If a user decides to proceed with an update from another source, update ownership is lost.

Update apps at less-disruptive times

App stores typically want to avoid updating an app that is actively in use because this leads to the app's running processes being killed, which potentially interrupts what the user was doing.

Starting with Android 14, the InstallConstraints API gives installers a way to ensure that their app updates happen at an opportune moment. For example, an app store can call the commitSessionAfterInstallConstraintsAreMet() method to make sure that an update is only committed when the user is no longer interacting with the app in question.

Seamlessly install optional splits

With split APKs, features of an app can be delivered in separate APK files, rather than as a monolithic APK. Split APKs allow app stores to optimize the delivery of different app components. For example, app stores might optimize based on the properties of the target device. The PackageInstaller API has supported splits since its introduction in API level 22.

In Android 14, the setDontKillApp() method allows an installer to indicate that the app's running processes shouldn't be killed when new splits are installed. App stores can use this feature to seamlessly install new features of an app while the user is using the app.

Paket metadata aplikasi

Mulai Android 14, penginstal paket Android memungkinkan Anda menentukan metadata aplikasi, seperti praktik keamanan data, yang akan disertakan di halaman app store seperti 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 mengupdate sharesheet sistem untuk mendukung tindakan aplikasi kustom dan hasil pratinjau yang lebih informatif bagi pengguna.

Menambahkan tindakan kustom

Dengan Android 14, aplikasi Anda dapat menambahkan tindakan kustom ke sharesheet sistem yang dipanggilnya.

Screenshot tindakan kustom di panel berbagi.

Meningkatkan peringkat target Berbagi Langsung

Android 14 menggunakan lebih banyak sinyal dari aplikasi untuk menentukan peringkat target langsung berbagi agar memberikan hasil yang lebih bermanfaat bagi pengguna. Untuk memberikan sinyal yang paling berguna untuk peringkat, ikuti panduan untuk meningkatkan peringkat target Berbagi Langsung. Aplikasi komunikasi juga dapat melaporkan penggunaan pintasan untuk pesan keluar dan masuk.

Baris Berbagi Langsung di sharesheet, seperti yang ditunjukkan oleh 1

Dukungan untuk animasi bawaan dan kustom untuk Kembali Prediktif

Video: Animasi 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:

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

Penggantian per aplikasi memungkinkan produsen perangkat mengubah perilaku aplikasi di perangkat layar besar. Misalnya, penggantian FORCE_RESIZE_APP menginstruksikan sistem untuk mengubah ukuran aplikasi agar sesuai dengan dimensi tampilan (menghindari mode kompatibilitas ukuran) meskipun resizeableActivity="false" disetel dalam manifes aplikasi.

Ganti dimaksudkan untuk meningkatkan pengalaman pengguna di perangkat layar besar.

Properti manifes baru memungkinkan Anda menonaktifkan beberapa penggantian produsen perangkat untuk aplikasi Anda.

Penggantian pengguna perangkat layar besar per aplikasi

Penggantian per aplikasi mengubah perilaku aplikasi di perangkat layar besar. Misalnya, penggantian produsen perangkat OVERRIDE_MIN_ASPECT_RATIO_LARGE menetapkan rasio aspek aplikasi ke 16:9, terlepas dari konfigurasi aplikasi.

Android 14 QPR1 memungkinkan pengguna menerapkan penggantian per aplikasi melalui menu setelan baru di perangkat layar besar.

Berbagi layar aplikasi

借助应用界面共享功能,用户可以在录制屏幕内容时共享应用窗口,而不是整个设备屏幕。

在应用屏幕共享模式下,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。

应用屏幕共享功能可让用户运行多个应用,但将内容共享限制为单个应用,从而提高工作效率并保护隐私。

Smart Reply yang didukung LLM di Gboard pada Pixel 8 Pro

On Pixel 8 Pro devices with the December Feature Drop, developers can try out higher-quality smart replies in Gboard powered by on-device Large Language Models (LLMs) running on Google Tensor.

This feature is available as a limited preview for US English in WhatsApp, Line, and KakaoTalk. It requires using a Pixel 8 Pro device with Gboard as your keyboard.

To try it out, first enable the feature in Settings > Developer Options > AiCore Settings > Enable Aicore Persistent.

Next, open a conversation in a supported app to see LLM-powered Smart Reply in Gboard's suggestion strip in response to incoming messages.

Gboard utilizes on-device LLMs to provide higher-quality smart replies.

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 verteks dan fragmen

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 Kanvas

协助使用 Android 的 Canvas API 通过 硬件加速至 HardwareBuffer、Android 14 引入了 HardwareBufferRenderer。如果您的用例涉及通过 SurfaceControl 与系统合成器通信以实现低延迟绘制,此 API 特别有用。