Aplikasi adaptif mendukung tampilan dalam semua ukuran: seluruh layar perangkat, jendela yang dapat diubah ukurannya dalam mode multi-aplikasi, orientasi potret dan lanskap, tampilan terlipat dan terbentang perangkat foldable.
Daftar singkat setelan konfigurasi dan API memungkinkan Anda mem-build aplikasi adaptif. Namun, beberapa setelan dan API yang sudah tidak digunakan lagi tidak kompatibel dengan aplikasi adaptif dan harus dihindari.
Kemampuan untuk berubah ukuran
Aplikasi adaptif mendukung kemampuan aplikasi untuk diubah ukurannya dan mode multi-aplikasi.
Atribut resizeableActivity
dari elemen manifes <activity>
dan
<application>
mengaktifkan atau menonaktifkan mode
multi-aplikasi di Android 11 (API level 30) dan yang lebih rendah. Di Android 12 (API level 31) dan
yang lebih tinggi, layar besar mendukung mode multi-aplikasi, terlepas dari
atribut. Untuk mengetahui informasi selengkapnya, lihat Mendukung mode multi-aplikasi.
Aktifkan aplikasi Anda untuk berpartisipasi dalam skenario multitasking multi-aplikasi untuk meningkatkan produktivitas dan kepuasan pengguna.
Tetapkan resizeableActivity="true"
jika aplikasi Anda menargetkan level API yang lebih rendah dari 24;
jika tidak, lupakan saja—nilainya adalah true
secara default di Android 7.0 (level
API 24) dan yang lebih tinggi.
Jangan tetapkan resizeableActivity="false"
untuk level API apa pun. Jangan mengecualikan aplikasi
dari kasus penggunaan yang melibatkan mode multi-aplikasi.
Orientasi
Aplikasi adaptif mendukung orientasi potret dan lanskap, terlepas dari ukuran layar atau mode windowing.
Setelan manifes screenOrientation
membatasi orientasi aktivitas.
Hapus setelan screenOrientation
dari manifes aplikasi Anda.
Mengunci orientasi aplikasi tidak mencegah perubahan ukuran jendela. Ukuran aplikasi
diubah saat memasuki mode multi-aplikasi, saat perangkat dilipat atau dibentangkan,
atau saat jendela jenis desktop diubah ukurannya. Aplikasi Anda harus mendukung perubahan
ukuran jendela, apa pun setelan atribut screenOrientation
.
Jangan batasi orientasi aktivitas. Aplikasi yang mengunci orientasi akan dijadikan tampilan lebar di perangkat layar besar dan ukuran jendela yang tidak kompatibel.
Aplikasi dengan tampilan lebar akan mengalami penurunan visibilitas di Google Play untuk tablet, perangkat foldable, dan perangkat ChromeOS.
Rasio aspek
Ukuran layar dan jendela bervariasi, begitu juga rasio aspeknya—dari tinggi dan sempit, hingga persegi, hingga pendek dan lebar.
Setelan manifes minAspectRatio
dan maxAspectRatio
membatasi
rasio aspek aplikasi Anda ke nilai hard code.
Sesuaikan aplikasi Anda agar sesuai dengan layar, terlepas dari dimensi relatifnya.
Hapus setelan minAspectRatio
dan maxAspectRatio
dari manifes
aplikasi Anda. Atau pastikan aplikasi Anda dapat diubah ukurannya, dan rasio aspek akan otomatis menyesuaikan
(lihat bagian Kemampuan Ubah Ukuran).
Jangan mencoba mengontrol dimensi relatif aplikasi Anda. Jika aplikasi berjalan di layar atau di jendela yang memiliki rasio aspek yang tidak kompatibel dengan rasio aspek aplikasi, aplikasi Anda akan ditampilkan dengan tampilan lebar.
Di Android 14 (API level 34) dan yang lebih baru, pengguna dapat mengganti rasio aspek aplikasi untuk memperluas aplikasi dengan tampilan lebar guna mengisi area tampilan yang tersedia. Lihat Mode kompatibilitas perangkat.
Ukuran jendela
Mengoptimalkan tata letak untuk berbagai ukuran tampilan adalah premis utama desain adaptif. Aplikasi adaptif berfokus pada ukuran jendela aplikasi, bukan ukuran layar perangkat. Saat aplikasi dalam layar penuh, jendela aplikasi adalah layar perangkat.
Class ukuran jendela memberikan cara sistematis untuk menentukan dan mengategorikan ukuran jendela aplikasi. Sesuaikan aplikasi Anda dengan mengubah tata letak saat class ukuran jendela aplikasi Anda berubah.
Evaluasi ukuran jendela aplikasi Anda berdasarkan class ukuran jendela.
Untuk menentukan class ukuran jendela, gunakan fungsi level atas currentWindowAdaptiveInfo()
dari library Compose Material 3 Adaptif. Untuk informasi
selengkapnya, lihat Mem-build aplikasi adaptif.
Jangan mengabaikan utilitas definisi class ukuran jendela dan API bawaan. Jangan gunakan API yang tidak digunakan lagi untuk menghitung ukuran jendela.
API yang Tidak Digunakan Lagi
API platform lama tidak mengukur jendela aplikasi dengan benar; beberapa mengukur layar perangkat, beberapa mengecualikan dekorasi sistem.
Gunakan WindowManager#getCurrentWindowMetrics()
dan
WindowMetrics#getBounds()
untuk mendapatkan ukuran jendela aplikasi. Gunakan
WindowMetrics#getDensity()
untuk mendapatkan kepadatan tampilan.
Jangan gunakan Display
API berikut yang tidak digunakan lagi untuk menentukan ukuran jendela:
getSize()
: Tidak digunakan lagi di Android 11 (API level 30)getMetrics()
: Tidak digunakan lagi di Android 11 (API level 30)getRealSize()
: Tidak digunakan lagi di Android 12 (API level 31)getRealMetrics()
: Tidak digunakan lagi di Android 12 (API level 31)
Compose
Jetpack Compose dirancang untuk pengembangan UI adaptif. Tidak ada XML, tidak ada file
tata letak, tidak ada penentu resource. Hanya composable stateless berbasis Kotlin
seperti Column
, Row
, dan Box
yang mendeskripsikan UI Anda, dan pengubah
seperti offset
, padding
, dan size
yang menambahkan perilaku ke elemen
UI.
Build dengan Compose. Dapatkan info terbaru tentang fitur dan rilis terbaru.
Jangan mengandalkan teknologi yang sudah usang. Jangan biarkan aplikasi Anda menjadi usang.
Library Adaptif Compose Material 3
Library Adaptif Compose Material 3 menyediakan komponen dan API yang memfasilitasi pengembangan aplikasi adaptif.
Gunakan API berikut untuk membuat aplikasi Anda adaptif:
NavigationSuiteScaffold
: Beralih antara menu navigasi dan kolom samping navigasi bergantung pada class ukuran jendela aplikasi.ListDetailPaneScaffold
: Mengimplementasikan tata letak kanonis detail daftar. Menyesuaikan tata letak dengan ukuran jendela aplikasi.SupportingPaneScaffold
: Mengimplementasikan tata letak kanonis panel pendukung.
Jangan lakukan hal sia-sia. Jangan lewatkan peningkatan produktivitas developer yang disediakan oleh semua library Jetpack Compose.
Tata letak
Pengguna mengharapkan aplikasi memanfaatkan ruang tampilan yang tersedia sebaik mungkin dengan konten tambahan atau kontrol yang ditingkatkan.
Aplikasi adaptif mengoptimalkan tata letak berdasarkan perubahan pada tampilan, khususnya, perubahan ukuran jendela aplikasi atau perubahan postur perangkat.
Ubah komponen UI saat ukuran jendela berubah untuk memanfaatkan ruang tampilan yang tersedia. Misalnya, tukar menu navigasi bawah yang digunakan pada ukuran jendela rapat dengan kolom samping navigasi vertikal pada jendela sedang dan diluaskan. Memposisikan ulang dialog agar dapat dijangkau di semua layar.
Atur konten ke dalam panel untuk mengaktifkan tata letak multipanel seperti panel detail daftar dan panel pendukung untuk tampilan konten dinamis.
Jika Anda tidak menggunakan panel konten, jangan hanya meregangkan elemen UI untuk mengisi
ruang tampilan yang tersedia. Baris teks yang panjang sulit dibaca. Tombol
yang diregangkan terlihat tidak didesain dengan baik. Jika Anda menggunakan Modifier.fillMaxWidth
, jangan
asumsikan bahwa itu adalah perilaku yang tepat untuk semua ukuran layar.
Perangkat input
Pengguna tidak hanya menggunakan layar sentuh untuk berinteraksi dengan aplikasi.
Aplikasi adaptif mendukung keyboard, mouse, dan stilus eksternal untuk memberikan pengalaman pengguna yang ditingkatkan dan membantu pengguna menjadi lebih produktif di semua faktor bentuk.
Manfaatkan fungsi bawaan framework Android untuk navigasi tab keyboard dan klik, pilih, dan scroll mouse atau trackpad. Publikasikan pintasan keyboard aplikasi Anda di Bantuan Pintasan Keyboard.
Gunakan library Material 3 Jetpack agar pengguna dapat menulis ke dalam
komponen TextField
menggunakan stilus.
Jangan membuat metode input alternatif menjadi tidak mungkin. Jangan menimbulkan masalah aksesibilitas.
Ringkasan
- Mem-build aplikasi dengan Compose dan library Adaptif Material 3
- Tata letak dasar pada class ukuran jendela
- Membuat tata letak multi-panel
- Membuat aplikasi agar dapat diubah ukurannya
- Jangan pernah mengunci orientasi aktivitas
- Jangan batasi rasio aspek
- Mendukung input selain sentuh
- Menghindari API yang tidak digunakan lagi
✓ Lakukan hal yang diharapkan pengguna: optimalkan aplikasi Anda untuk keragaman perangkat yang digunakan orang setiap hari.
✗ Jangan menunggu. Mulai sekarang!