
Android 13 (API level 33) memperkenalkan gestur kembali prediktif untuk perangkat Android seperti ponsel, perangkat layar besar, dan perangkat foldable. Ini adalah bagian dari rilis selama beberapa tahun; saat sepenuhnya diterapkan, fitur ini akan memungkinkan pengguna melihat pratinjau tujuan atau hasil gestur kembali lainnya sebelum menyelesaikan sepenuhnya, sehingga memungkinkan mereka memutuskan apakah akan melanjutkan atau tetap dalam tampilan saat ini.
Misalnya, menggunakan gestur kembali dapat menampilkan pratinjau animasi Layar utama di belakang aplikasi, seperti yang ditampilkan dalam mockup pada gambar 1. Mulai Android 13, Anda dapat menguji animasi "kembali ke layar utama" ini dengan mengaktifkan opsi developer (seperti yang dijelaskan di halaman ini).
Agar dapat mendukung gestur kembali prediktif, Anda harus mengupdate aplikasi menggunakan
OnBackPressedCallback
AppCompat 1.6.0-alpha05 (AndroidX) atau
API yang lebih tinggi, atau menggunakan versi baru API platform OnBackInvokedCallback
.
Update ini menyediakan jalur migrasi untuk menangkap navigasi kembali dengan benar,
yang melibatkan penggantian intersepsi kembali dari KeyEvent.KEYCODE_BACK
dan class apa pun dengan metode onBackPressed
seperti Activity
dan
Dialog
dengan Back API sistem yang baru.
Codelab dan video Google I/O
Selain menggunakan dokumentasi di halaman ini, coba codelab kami. Codelab ini menyediakan implementasi kasus penggunaan umum tentang WebView yang menangani gestur kembali prediktif menggunakan AndroidX Activity API.
Anda juga dapat melihat video Google I/O kami, yang mencakup contoh tambahan untuk mengimplementasikan AndroidX dan API platform.
Mengupdate aplikasi yang menggunakan navigasi kembali default
Mengupdate aplikasi untuk mendukung fitur ini dapat dilakukan dengan mudah jika aplikasi Anda tidak menerapkan perilaku kembali khusus (dengan kata lain, aplikasi akan menyerahkan penanganan kembali kepada sistem). Cukup pilih untuk menggunakan fitur ini seperti yang dijelaskan di halaman ini.
Jika aplikasi Anda menggunakan Fragment atau Komponen Navigation, upgrade juga ke AndroidX Activity 1.6.0-alpha05 atau yang lebih tinggi.
Mengupdate aplikasi yang menggunakan navigasi kembali kustom
Jika aplikasi Anda menerapkan perilaku kembali kustom, ada jalur migrasi yang berbeda, bergantung pada apakah aplikasi tersebut menggunakan AndroidX dan caranya menangani navigasi kembali.
Aplikasi Anda menggunakan AndroidX | Cara aplikasi Anda menangani navigasi kembali | Jalur migrasi yang direkomendasikan (link di halaman ini) |
Ya | API AndroidX | Memigrasikan implementasi kembali AndroidX yang ada |
API platform yang tidak didukung | Memigrasikan aplikasi AndroidX yang berisi API navigasi kembali yang tidak didukung ke API AndroidX | |
Tidak | API platform yang tidak didukung, dapat dimigrasikan | Memigrasikan aplikasi yang menggunakan API navigasi kembali yang tidak didukung ke API platform |
API platform tidak didukung, tetapi tidak dapat dimigrasikan | Tunda persetujuan hingga fitur ini diperlukan |
Memigrasikan implementasi navigasi kembali AndroidX
Kasus penggunaan ini adalah yang paling umum (dan paling direkomendasikan). Ini berlaku untuk aplikasi baru
atau yang sudah ada, yang menerapkan penanganan navigasi gestur khusus dengan
OnBackPressedDispatcher
, seperti yang dijelaskan dalam
Menyediakan navigasi kembali khusus.
Jika aplikasi Anda sesuai dengan kategori ini, ikuti langkah-langkah berikut untuk menambahkan dukungan bagi gestur kembali prediktif:
Untuk memastikan API yang sudah menggunakan API
OnBackPressedDispatcher
(seperti Fragment dan Komponen Navigation) berfungsi dengan lancar menggunakan gestur kembali prediktif, upgrade ke AndroidX Activity 1.6.0-alpha05.// In your build.gradle file: dependencies { // Add this in addition to your other dependencies implementation "androidx.activity:activity:1.6.0-alpha05"
Pilih untuk mendukung gestur kembali prediktif, seperti yang dijelaskan di halaman ini.
Memigrasikan aplikasi AndroidX yang berisi API navigasi kembali yang tidak didukung ke API AndroidX
Jika aplikasi Anda menggunakan library AndroidX, tetapi menerapkan atau membuat referensi ke API navigasi kembali yang tidak didukung, Anda harus bermigrasi untuk menggunakan API AndroidX untuk mendukung perilaku baru.
Untuk memigrasikan API yang tidak didukung ke API AndroidX:
Migrasikan logika penanganan Kembali sistem Anda ke
OnBackPressedDispatcher
AndroidX dengan implementasiOnBackPressedCallback
. Untuk panduan mendetail, lihat Menyediakan navigasi kembali khusus.Nonaktifkan
OnBackPressedCallback
saat siap menghentikan intersepsi gestur kembali.Berhenti menahan peristiwa kembali melalui
OnBackPressed
atauKeyEvent.KEYCODE_BACK
.Pastikan untuk mengupgrade ke AndroidX Activity 1.6.0-alpha05.
// In your build.gradle file: dependencies { // Add this in addition to your other dependencies implementation "androidx.activity:activity:1.6.0-alpha05"
Setelah berhasil memigrasikan aplikasi Anda, pilih untuk menggunakan gestur kembali prediktif seperti yang dijelaskan di halaman ini.
Memigrasikan aplikasi yang menggunakan API navigasi kembali yang tidak didukung ke API platform
Jika aplikasi Anda tidak dapat menggunakan library AndroidX dan sebagai gantinya mengimplementasikan atau membuat
referensi ke navigasi Kembali kustom menggunakan API yang tidak didukung, Anda harus bermigrasi
ke API platform OnBackInvokedCallback
.
Selesaikan langkah-langkah berikut untuk memigrasikan API yang tidak didukung ke API platform:
Gunakan
OnBackInvokedCallback
API baru di perangkat yang menjalankan Android 13 atau versi lebih baru, dan andalkan API yang tidak didukung di perangkat yang menjalankan Android 12 atau versi lebih lama.Daftarkan logika kembali kustom Anda di
OnBackInvokedCallback
denganonBackInvokedDispatcher
. Langkah ini akan mencegah aktivitas saat ini diselesaikan, dan callback Anda akan mendapat kesempatan untuk bereaksi terhadap tindakan Kembali setelah pengguna menyelesaikan navigasi Kembali sistem.Batalkan pendaftaran
OnBackInvokedCallback
saat siap menghentikan intersepsi gestur kembali. Jika tidak, pengguna mungkin akan melihat perilaku yang tidak diinginkan saat menggunakan navigasi Kembali sistem—misalnya, "terhenti" di antara tampilan dan memaksa mereka untuk menghentikan paksa aplikasi Anda.Berikut contoh cara memigrasikan logika dari
onBackPressed
:Kotlin
@Override fun onCreate() { if (BuildCompat.isAtLeastT()) { onBackInvokedDispatcher.registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT ) { /** * onBackPressed logic goes here. For instance: * Prevents closing the app to go home screen when in the * middle of entering data to a form * or from accidentally leaving a fragment with a WebView in it * * Unregistering the callback to stop intercepting the back gesture: * When the user transitions to the topmost screen (activity, fragment) * in the BackStack, unregister the callback by using * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback * (https://developer.android.com/reference/kotlin/android/window/OnBackInvokedDispatcher#unregisteronbackinvokedcallback) */ } } }
Java
@Override void onCreate() { if (BuildCompat.isAtLeastT()) { getOnBackInvokedDispatcher().registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT, () -> { /** * onBackPressed logic goes here - For instance: * Prevents closing the app to go home screen when in the * middle of entering data to a form * or from accidentally leaving a fragment with a WebView in it * * Unregistering the callback to stop intercepting the back gesture: * When the user transitions to the topmost screen (activity, fragment) * in the BackStack, unregister the callback by using * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback * (https://developer.android.com/reference/kotlin/android/view/OnBackInvokedDispatcher#unregisteronbackinvokedcallback) */ } ); } }
Berhenti mengintersep peristiwa kembali melalui
OnBackPressed
atauKeyEvent.KEYCODE_BACK
untuk Android 13 dan versi lebih baru.Setelah Anda berhasil memigrasikan aplikasi, pilih untuk menggunakan gestur kembali prediktif seperti yang dijelaskan di bagian berikut.
Memilih untuk menggunakan gestur kembali prediktif
Setelah menentukan cara mengupdate aplikasi berdasarkan kasus, Anda dapat dengan mudah memilih untuk mendukung gestur kembali prediktif.
Untuk memilih mendukung, dalam AndroidManifest.xml
di tag <application>
, setel
flag android:enableOnBackInvokedCallback
ke true
.
<application
...
android:enableOnBackInvokedCallback="true"
... >
...
</application>
Jika Anda tidak memberikan nilai, setelah default false
akan digunakan dan menonaktifkan gestur kembali
prediktif.
Menguji animasi gestur kembali prediktif
Mulai rilis final Android 13, Anda akan dapat mengaktifkan opsi developer untuk menguji animasi "kembali ke layar utama" yang ditampilkan pada gambar 1.
Untuk menguji animasi ini, selesaikan langkah-langkah berikut:
Di perangkat, buka Setelan > Sistem > Opsi developer.
Pilih Animasi kembali prediktif.
Luncurkan aplikasi yang telah diupdate, dan gunakan gestur kembali untuk melihat cara kerjanya.