Aplikasi adaptif mendukung semua ukuran layar: seluruh layar perangkat, dapat diubah ukurannya jendela dalam mode multi-aplikasi, orientasi potret dan lanskap, dilipat dan layar perangkat foldable yang terbuka.
Daftar singkat setelan konfigurasi dan API memungkinkan Anda membangun aplikasi. Namun, beberapa setelan dan API yang sudah tidak berlaku lagi tidak kompatibel dengan aplikasi adaptif dan harus dihindari.
Kemampuan untuk berubah ukuran
Aplikasi adaptif mendukung kemampuan mengubah ukuran aplikasi dan mode multi-aplikasi.
Atribut resizeableActivity
dari <activity>
dan
Elemen manifes <application>
mengaktifkan atau menonaktifkan multi-aplikasi
di Android 11 (level API 30) dan yang lebih rendah. Di Android 12 (level API 31) dan
yang lebih tinggi, perangkat layar besar mendukung mode multi-aplikasi, terlepas dari
. Untuk mengetahui informasi selengkapnya, lihat Mendukung mode multi-aplikasi.
Aktifkan aplikasi Anda untuk peserta dalam skenario multi-aplikasi dan multitasking untuk peningkatan produktivitas dan kepuasan pengguna.
Tetapkan resizeableActivity="true"
jika aplikasi Anda menargetkan level API yang lebih rendah dari 24;
jika tidak, lupakan saja—default-nya adalah true
di Android 7.0 (API)
level 24) dan lebih tinggi.
Jangan menyetel resizeableActivity="false"
untuk level API apa pun. Jangan kecualikan aplikasi Anda
dari kasus penggunaan yang melibatkan mode multi-aplikasi.
Orientasi
Aplikasi adaptif mendukung orientasi potret dan lanskap, apa pun tampilannya ukuran atau mode windowing.
Setelan manifes screenOrientation
membatasi orientasi aktivitas.
Hapus setelan screenOrientation
dari manifes aplikasi Anda.
Mengunci orientasi aplikasi tidak mencegah perubahan ukuran jendela. Aplikasi
diubah ukurannya saat memasuki mode multi-aplikasi, saat perangkat dilipat atau dibentangkan,
atau ketika jendela bentuk bebas diubah ukurannya. Aplikasi Anda harus mendukung perubahan di jendela
ukuran, terlepas dari setelan atribut screenOrientation
.
Jangan batasi orientasi aktivitas. Aplikasi yang mengunci orientasi memiliki tampilan lebar pada perangkat layar besar dan ukuran jendela yang tidak kompatibel.
Aplikasi dengan tampilan lebar dapat mengalami penurunan visibilitas di Google Play untuk tablet, perangkat foldable, dan perangkat ChromeOS.
Rasio aspek
Karena ukuran layar dan jendela bervariasi, begitu pula rasio aspeknya—mulai dari tinggi dan sempit, persegi, hingga pendek dan lebar.
Setelan manifes minAspectRatio
dan maxAspectRatio
membatasi
rasio aspek aplikasi Anda terhadap nilai hard code.
Sesuaikan aplikasi Anda dengan layar, terlepas dari dimensi relatifnya.
Menghapus setelan minAspectRatio
dan maxAspectRatio
dari aplikasi Anda
manifes. Atau, pastikan aplikasi Anda dapat diubah ukurannya, dan rasio aspeknya sendiri sudah diatur
(lihat bagian Kemampuan mengubah ukuran).
Jangan mencoba mengontrol dimensi relatif aplikasi Anda. Jika aplikasi Anda berjalan pada atau di jendela yang memiliki rasio aspek yang tidak kompatibel dengan rasio aspek aplikasi, aplikasi Anda akan memiliki tampilan lebar.
Di Android 14 (level API 34) dan yang lebih baru, pengguna dapat mengganti rasio aspek aplikasi untuk meluaskan aplikasi dengan tampilan lebar guna mengisi area tampilan yang tersedia. Lihat Perangkat mode kompatibilitas.
Ukuran jendela
Mengoptimalkan tata letak untuk berbagai ukuran tampilan adalah premis utama dari dan desain adaptif. Aplikasi adaptif berfokus pada ukuran jendela aplikasi, bukan pada perangkat ukuran layar. Saat aplikasi dalam mode layar penuh, jendela aplikasi adalah layar perangkat.
Class ukuran jendela memberikan cara yang sistematis untuk menentukan dan mengategorikan ukuran jendela aplikasi. Sesuaikan aplikasi Anda dengan mengubah tata letak sesuai jendela perubahan ukuran aplikasi Anda.
Evaluasi ukuran jendela aplikasi berdasarkan class ukuran jendela.
Untuk menentukan class ukuran jendela, gunakan currentWindowAdaptiveInfo()
fungsi tingkat teratas library Adaptif Compose Material 3. Untuk selengkapnya
informasi selengkapnya, lihat Membangun aplikasi adaptif.
Jangan abaikan 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 di antaranya tidak termasuk 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 (level API 30)getMetrics()
: Tidak digunakan lagi di Android 11 (level API 30)getRealSize()
: Tidak digunakan lagi di Android 12 (level API 31)getRealMetrics()
: Tidak digunakan lagi di Android 12 (level API 31)
Compose
Jetpack Compose dirancang untuk pengembangan UI adaptif. Tanpa XML, tanpa tata letak
tanpa 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 UI
yang kurang penting.
Membangun aplikasi dengan Compose. Ikuti terus info terbaru tentang fitur dan rilis terbaru.
Jangan mengandalkan teknologi yang sudah ketinggalan zaman. 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 menjadi adaptif:
NavigationSuiteScaffold
: Beralih antara menu navigasi dan kolom samping navigasi yang bergantung pada class ukuran jendela aplikasi.ListDetailPaneScaffold
: Mengimplementasikan tata letak kanonis daftar-detail. Menyesuaikan tata letak dengan ukuran jendela aplikasi.SupportingPaneScaffold
: Menerapkan kanonis panel pendukung tata letak.
Jangan memulai dari hal yang sudah ada. Jangan lewatkan peningkatan produktivitas developer yang disediakan oleh semua library Jetpack Compose.
Tata letak
Pengguna berharap aplikasi memaksimalkan ruang tampilan yang tersedia dengan konten atau kontrol yang ditingkatkan.
Aplikasi adaptif mengoptimalkan tata letak berdasarkan perubahan layar, khususnya, perubahan ukuran jendela aplikasi atau perubahan postur perangkat.
Mengubah komponen UI saat ukuran jendela berubah untuk memanfaatkan API yang tersedia ruang tampilan. Misalnya, tukar menu navigasi bawah yang digunakan pada rapat ukuran jendela untuk kolom samping navigasi vertikal pada jendela sedang dan yang diperluas. Ubah posisi dialog agar dapat dijangkau di semua layar.
Atur konten ke dalam panel untuk mengaktifkan tata letak multi-panel seperti daftar‐detail 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. Dibentangkan
tombol terlihat tidak
desain yang baik. Jika Anda menggunakan Modifier.fillMaxWidth
, jangan
mengasumsikan bahwa perilaku inilah yang
sesuai untuk semua ukuran tampilan.
Perangkat input
Pengguna tidak hanya menggunakan layar sentuh untuk berinteraksi dengan aplikasi.
Aplikasi adaptif mendukung keyboard, mouse, dan stilus eksternal untuk memberikan meningkatkan pengalaman pengguna dan membantu pengguna menjadi lebih produktif pada faktor bentuk macam-macam.
Manfaatkan fungsi bawaan framework Android untuk navigasi tab keyboard dan klik, pilih, dan scroll mouse atau trackpad. Memublikasikan Aplikasi pintasan keyboard aplikasi Anda di Bantuan Pintasan Keyboard.
Gunakan library Material 3 Jetpack agar pengguna dapat menulis ke
Komponen TextField
menggunakan stilus.
Jangan membuat metode input alternatif menjadi tidak mungkin. Jangan masukkan aksesibilitas masalah performa.
Ringkasan
- Membangun aplikasi dengan Compose dan library Adaptif Material 3
- Menentukan tata letak berdasarkan class ukuran jendela
- Membuat tata letak multipanel
- Membuat aplikasi agar dapat diubah ukurannya
- Jangan pernah mengunci orientasi aktivitas
- Jangan batasi rasio aspek
- Mendukung input selain sentuhan
- Menghindari API yang tidak digunakan lagi
✓ Melakukan hal yang diharapkan pengguna: mengoptimalkan aplikasi Anda untuk keragaman perangkat yang diandalkan orang setiap hari.
✗ Jangan tunggu. Mulai sekarang!