Anjuran dan larangan adaptif

Aplikasi adaptif mendukung tampilan dalam semua ukuran: seluruh layar perangkat, jendela yang dapat diubah ukurannya dalam mode multi-aplikasi, orientasi potret dan lanskap, serta tampilan terlipat dan terbentang perangkat foldable.

Daftar singkat setelan konfigurasi dan API memungkinkan Anda membuat aplikasi adaptif. Namun, beberapa setelan dan API yang sudah tidak berlaku tidak kompatibel dengan aplikasi adaptif dan harus dihindari.

Kemampuan untuk berubah ukuran

Aplikasi adaptif mendukung kemampuan pengubahan ukuran aplikasi dan mode multi-aplikasi.

Atribut resizeableActivity dari elemen manifes <activity> dan <application> mengaktifkan atau menonaktifkan mode multi‑aplikasi di Android 11 (level API 30) dan yang lebih rendah. Di Android 12 (level API 31) dan yang lebih tinggi, layar besar mendukung mode multi‑aplikasi, terlepas dari atributnya. Untuk mengetahui informasi selengkapnya, lihat Mendukung mode multi-aplikasi.

✓ Lakukan

Aktifkan aplikasi Anda untuk berpartisipasi dalam skenario multi-aplikasi dan multitasking untuk meningkatkan produktivitas dan kepuasan pengguna.

Tetapkan resizeableActivity="true" jika aplikasi Anda menargetkan level API yang lebih rendah dari 24; jika tidak, lupakan saja—nilai defaultnya adalah true di Android 7.0 (level API 24) dan yang lebih tinggi.

✗ Jangan

Jangan setel resizeableActivity="false" untuk level API apa pun. Jangan mengecualikan aplikasi Anda 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.

✓ Lakukan

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 saat jendela jenis desktop diubah ukurannya. Aplikasi Anda harus mendukung perubahan ukuran jendela, terlepas dari setelan atribut screenOrientation.

✗ Jangan

Jangan batasi orientasi aktivitas. Aplikasi yang mengunci orientasi akan ditampilkan dalam tampilan lebar di perangkat layar besar dan ukuran jendela yang tidak kompatibel.

Aplikasi yang ditampilkan dalam kotak surat akan mengalami penurunan visibilitas di Google Play untuk tablet, perangkat foldable, dan perangkat ChromeOS.

Rasio aspek

Seiring dengan bervariasinya ukuran layar dan jendela, rasio aspeknya juga bervariasi—dari tinggi dan sempit, hingga persegi, hingga pendek dan lebar.

Setelan manifes minAspectRatio dan maxAspectRatio membatasi rasio aspek aplikasi Anda ke nilai yang dikodekan secara permanen.

✓ Lakukan

Sesuaikan aplikasi Anda agar pas dengan tampilan, terlepas dari dimensi relatifnya.

Hapus setelan minAspectRatio dan maxAspectRatio dari manifes aplikasi Anda. Atau pastikan aplikasi Anda dapat diubah ukurannya, dan rasio aspek akan diatur secara otomatis (lihat bagian Dapat Diubah Ukurannya).

✗ Jangan

Jangan mencoba mengontrol dimensi relatif aplikasi Anda. Jika aplikasi Anda berjalan di layar atau di jendela yang memiliki rasio aspek yang tidak kompatibel dengan rasio aspek aplikasi, aplikasi Anda akan ditampilkan dalam tampilan lebar.

Di Android 14 (level API 34) dan yang lebih tinggi, pengguna dapat mengganti rasio aspek aplikasi untuk meluaskan aplikasi dengan tampilan lebar agar 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.

✓ Lakukan

Evaluasi ukuran jendela aplikasi Anda berdasarkan class ukuran jendela.

Untuk menentukan class ukuran jendela, gunakan fungsi tingkat teratas currentWindowAdaptiveInfo() dari library Adaptif Compose Material 3. Untuk mengetahui informasi selengkapnya, lihat Membangun aplikasi adaptif.

✗ Jangan

Jangan mengabaikan kegunaan 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 yang lebih lama tidak mengukur jendela aplikasi dengan benar; beberapa mengukur layar perangkat, beberapa mengecualikan dekorasi sistem.

✓ Lakukan

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

✗ Jangan

Jangan gunakan API Display yang tidak digunakan lagi berikut 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)

Tulis

Jetpack Compose dirancang untuk pengembangan UI adaptif. Tidak ada XML, tidak ada file tata letak, tidak ada penentu resource. Composable tanpa status berbasis Kotlin seperti Column, Row, dan Box yang menjelaskan UI Anda, dan pengubah seperti offset, padding, dan size yang menambahkan perilaku ke elemen UI.

✓ Lakukan

Bangun dengan Compose. Selalu ikuti perkembangan fitur dan rilis terbaru.

✗ Jangan

Jangan mengandalkan teknologi yang sudah usang. Jangan biarkan aplikasi Anda menjadi usang.

Library Adaptif Compose Material 3

Library Adaptif Material 3 Compose menyediakan komponen dan API yang memfasilitasi pengembangan aplikasi adaptif.

✓ Lakukan

Gunakan API berikut untuk membuat aplikasi Anda adaptif:

✗ Jangan

Jangan lakukan hal sia-sia. Jangan lewatkan peningkatan produktivitas developer yang diberikan oleh semua library Jetpack Compose.

Tata letak

Pengguna berharap aplikasi memanfaatkan ruang tampilan yang tersedia secara maksimal dengan konten tambahan atau kontrol yang ditingkatkan.

Aplikasi adaptif mengoptimalkan tata letak berdasarkan perubahan pada layar, khususnya, perubahan ukuran jendela aplikasi atau perubahan postur perangkat.

✓ Lakukan

Ubah komponen UI saat ukuran jendela berubah untuk memanfaatkan ruang layar yang tersedia. Misalnya, tukar menu navigasi bawah yang digunakan pada ukuran jendela rapat dengan kolom samping navigasi vertikal pada jendela sedang dan diluaskan. Memosisikan ulang dialog agar dapat dijangkau di semua layar.

Atur konten ke dalam panel untuk mengaktifkan tata letak multi‑panel seperti list‑detail dan panel pendukung untuk tampilan konten dinamis.

✓ Lakukan: Aktivitas daftar dan detail yang disusun dalam tata letak panel ganda.
✗ Jangan

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 didesain dengan buruk. Jika Anda menggunakan Modifier.fillMaxWidth, jangan menganggap bahwa itu adalah perilaku yang tepat untuk semua ukuran layar.

✗ Jangan lakukan: Tata letak diregangkan untuk mengisi jendela yang diperluas.

Perangkat input

Pengguna tidak hanya menggunakan layar sentuh untuk berinteraksi dengan aplikasi.

Aplikasi adaptif mendukung keyboard eksternal, mouse, dan stilus untuk memberikan pengalaman pengguna yang lebih baik dan membantu pengguna menjadi lebih produktif di berbagai faktor bentuk.

✓ Lakukan

Manfaatkan fungsi bawaan framework Android untuk navigasi tab keyboard dan klik, pilih, serta scroll mouse atau trackpad. Publikasikan pintasan keyboard aplikasi Anda di Bantuan Pintasan Keyboard.

Gunakan library Material 3 Jetpack untuk memungkinkan pengguna menulis ke komponen TextField menggunakan stilus.

✗ Jangan

Jangan membuat metode input alternatif menjadi tidak mungkin. Jangan menimbulkan masalah aksesibilitas.

Ringkasan

  • Membangun aplikasi Anda 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 sentuhan
  • Menghindari API yang tidak digunakan lagi

✓ Lakukan apa yang diharapkan pengguna Anda: optimalkan aplikasi Anda untuk keberagaman perangkat yang digunakan orang setiap hari.

✗ Jangan menunggu. Mulai sekarang!