Orientasi, rasio aspek, dan kemampuan ubah ukuran aplikasi

Aplikasi Android berjalan di berbagai jenis perangkat: ponsel, tablet, perangkat foldable, perangkat ChromeOS, mobil, TV, dan bahkan XR. Untuk beradaptasi dengan lingkungan yang beragam ini, aplikasi Anda harus mendukung semua faktor bentuk perangkat dan ukuran layar.

Android 16 (level API 36) memungkinkan aplikasi beradaptasi dengan berbagai faktor bentuk dan ukuran tampilan dengan mengganti batasan aplikasi untuk orientasi layar, rasio aspek, dan kemampuan pengubahan ukuran. Penggantian berlaku untuk perangkat dengan lebar terkecil >= 600dp yang menentukan hal berikut:

  • Tablet
  • Tampilan bagian dalam perangkat foldable layar besar
  • Mode jendela desktop (di semua faktor bentuk)

Aplikasi yang menargetkan level API 36 dapat diubah ukurannya dan dapat memasuki mode multi-aplikasi (setara dengan resizeableActivity="true") jika lebar terkecil layar adalah >= 600 dp.

Aplikasi ditampilkan dalam format lebar di perangkat layar besar yang tidak dilipat sebelum Android 16, tetapi ditampilkan dalam layar penuh saat menargetkan Android 16. Aplikasi menampilkan lebih banyak item berita saat layar penuh daripada tampilan lebar.
Gambar 1. Feed Berita Developer yang sebelumnya ditampilkan dalam format lebar di perangkat layar besar (kiri) berjalan dalam layar penuh saat menargetkan Android 16 (kanan).

Android 16 menerapkan model desain aplikasi adaptif yang konsisten yang mengoptimalkan pengalaman pengguna dengan mempertimbangkan preferensi pengguna untuk orientasi perangkat, rasio aspek, dan ukuran tampilan.

Perubahan

Atribut manifes dan API berikut diabaikan untuk aplikasi yang menargetkan Android 16 (level API 36) di layar besar:

Atribut atau API Nilai yang diabaikan
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity semua
minAspectRatio semua
maxAspectRatio semua
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

Pengecualian

Pengecualian untuk perubahan Android 16 mencakup yang berikut:

  • Layar yang lebih kecil dari sw600dp (sebagian besar ponsel, perangkat flippable, dan layar luar perangkat foldable layar besar)

  • Game, berdasarkan flag android:appCategory

    Publikasikan game Anda menggunakan Android App Bundle dan Penandatanganan Aplikasi Play, sehingga Google Play dapat mengelola tanda dan memberikan manfaat app bundle secara otomatis. Lihat juga Ringkasan manifes aplikasi.

  • Pengguna memilih untuk menggunakan perilaku default aplikasi di setelan rasio aspek

Nonaktifkan

Untuk memilih tidak ikut perilaku API level 36, deklarasikan properti manifes PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY.

Untuk memilih tidak ikut aktivitas tertentu, tetapkan properti dalam elemen <activity>:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

Untuk memilih tidak ikut untuk seluruh aplikasi Anda, tetapkan properti di elemen <application>:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

Pengujian

Untuk menguji apakah aplikasi Anda terpengaruh oleh perubahan Android 16, gunakan emulator seri Pixel Tablet dan Pixel Fold di Android Studio, lalu tetapkan targetSdkPreview = "Baklava" di file build.gradle modul aplikasi Anda.

Atau gunakan framework kompatibilitas aplikasi di perangkat pengujian Anda dengan mengaktifkan tanda UNIVERSAL_RESIZABLE_BY_DEFAULT (lihat Alat framework kompatibilitas).

Anda dapat mengotomatiskan pengujian dengan framework pengujian Espresso dan API pengujian Jetpack Compose.

Masalah umum

Aplikasi yang membatasi orientasi perangkat, rasio aspek, atau kemampuan mengubah ukuran aplikasi mungkin mengalami masalah tampilan di Android 16, seperti tata letak yang tumpang-tindih.

Untuk memberikan pengalaman pengguna yang optimal di ponsel, perangkat foldable, tablet, perangkat ChromeOS, layar mobil, dan XR, bangun aplikasi Anda agar responsif dan adaptif:

  • Hindari komponen UI yang diregangkan: Tata letak yang didesain untuk layar ponsel standar dalam orientasi potret kemungkinan tidak akan mengakomodasi rasio aspek lainnya. Misalnya, elemen UI yang mengisi seluruh lebar tampilan akan terlihat meregang dalam orientasi lanskap. Tambahkan lebar maksimum ke komponen untuk menghindari peregangan.

  • Aktifkan tata letak agar dapat di-scroll: Jika tata letak tidak dapat di-scroll, pengguna mungkin tidak dapat mengakses tombol atau elemen UI lain yang berada di luar layar dalam orientasi lanskap. Aktifkan tata letak aplikasi agar dapat di-scroll untuk memastikan semua konten dapat dijangkau, terlepas dari tinggi layar.

  • Pastikan kompatibilitas kamera dalam potret dan lanskap: Pratinjau jendela bidik kamera yang mengasumsikan rasio aspek dan orientasi tertentu relatif terhadap sensor kamera dapat menghasilkan pratinjau yang direntangkan atau dibalik pada layar yang tidak sesuai. Pastikan jendela bidik berputar dengan benar saat orientasi berubah. Mengaktifkan jendela bidik untuk menyesuaikan rasio aspek UI yang berbeda dengan rasio aspek sensor.

  • Mempertahankan status selama perubahan ukuran jendela: Penghapusan batasan orientasi dan rasio aspek dapat menyebabkan perubahan ukuran jendela aplikasi yang sering terjadi sebagai respons terhadap cara pengguna lebih suka menggunakan aplikasi, misalnya, dengan memutar, melipat, atau membentangkan perangkat atau dengan mengubah ukuran aplikasi dalam mode multi-aplikasi atau mode jendela desktop. Perubahan konfigurasi seperti perubahan orientasi dan pengubahan ukuran jendela menyebabkan pembuatan ulang aktivitas (secara default). Untuk memastikan pengalaman pengguna yang optimal, pertahankan status aplikasi selama perubahan konfigurasi sehingga aplikasi Anda mempertahankan data (seperti input formulir) dan pengguna dapat mempertahankan konteks.

  • Gunakan class ukuran jendela: Mendukung berbagai ukuran jendela dan rasio aspek tanpa penyesuaian khusus perangkat. Asumsikan ukuran jendela akan sering berubah. Gunakan class ukuran jendela untuk mengkarakterisasi dimensi jendela, lalu terapkan tata letak adaptif yang sesuai.

  • Buat tata letak responsif: Dalam class ukuran jendela, tata letak responsif menyesuaikan dengan perubahan dimensi tampilan untuk selalu membuat presentasi aplikasi yang optimal.

Linimasa

  • Android 16 (2025): Dukungan untuk semua orientasi dan rasio aspek serta untuk kemampuan pengubahan ukuran aplikasi adalah pengalaman dasar untuk perangkat layar besar (lebar layar terkecil >= 600dp) untuk aplikasi yang menargetkan API level 36. Namun, developer dapat memilih untuk tidak ikut.

  • Rilis Android pada tahun 2026: Dukungan untuk semua orientasi dan rasio aspek serta kemampuan pengubahan ukuran aplikasi akan menjadi pengalaman dasar untuk perangkat layar besar (lebar layar terkecil >= 600 dp) bagi aplikasi yang menargetkan level API 37. Developer tidak akan memiliki opsi untuk memilih tidak ikut.

Tingkat API target Perangkat yang berlaku Developer diizinkan untuk memilih tidak ikut
36 (Android 16) Perangkat layar besar (lebar layar terkecil >= 600 dp) Ya
37 (Diantisipasi) Perangkat layar besar (lebar layar terkecil >= 600 dp) Tidak

Batas waktu untuk menargetkan level API tertentu berbeda-beda di setiap app store. Google Play akan mewajibkan aplikasi menargetkan API level 36 mulai Agustus 2026, dan API level 37 mulai Agustus 2027.

Referensi lainnya