Anjuran dan larangan adaptif

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.

✓ Anjuran

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.

✗ Larangan

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.

✓ Anjuran

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.

✗ Larangan

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.

✓ Anjuran

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).

✗ Larangan

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.

✓ Anjuran

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.

✗ Larangan

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.

✓ Anjuran

Gunakan WindowManager#getCurrentWindowMetrics() dan WindowMetrics#getBounds() untuk mendapatkan ukuran jendela aplikasi. Gunakan WindowMetrics#getDensity() untuk mendapatkan kepadatan tampilan.

✗ Larangan

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.

✓ Anjuran

Membangun aplikasi dengan Compose. Ikuti terus info terbaru tentang fitur dan rilis terbaru.

✗ Larangan

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.

✓ Anjuran

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.
✗ Larangan

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.

✓ Anjuran

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.

✓ Anjuran: Buat daftar dan detail aktivitas yang diatur dalam tata letak dua panel.
✗ Larangan

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.

✗ Jangan: Tata letak direntangkan untuk mengisi jendela yang diperluas.

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.

✓ Anjuran

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.

✗ Larangan

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!