Orientasi, rasio aspek, dan kemampuan ubah ukuran aplikasi

Aplikasi Android berjalan di semua jenis perangkat: ponsel, tablet, perangkat foldable, Chromebook, 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 (API level 36) memungkinkan aplikasi beradaptasi dengan berbagai faktor bentuk dan ukuran tampilan dengan mengganti batasan aplikasi untuk orientasi layar, rasio tinggi lebar, dan kemampuan untuk diubah ukurannya. Penggantian berlaku untuk perangkat dengan lebar terkecil >= 600dp yang menentukan hal berikut:

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

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

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

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

Perubahan

Atribut manifes dan API berikut diabaikan untuk aplikasi yang menargetkan Android 16 (API level 36) di perangkat 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 hal berikut:

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

  • Game, berdasarkan tanda 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 Pixel Tablet dan seri Pixel Fold di Android Studio, lalu tetapkan targetSdkPreview = "Baklava" dalam file build.gradle modul aplikasi Anda.

Atau, gunakan framework kompatibilitas aplikasi di perangkat pengujian 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 lebar tinggi, atau kemampuan mengubah ukuran aplikasi mungkin memiliki masalah tampilan di Android 16, seperti tata letak yang tumpang-tindih.

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

  • Hindari komponen UI yang diregangkan: Tata letak yang dirancang untuk layar ponsel standar potret kemungkinan akan gagal mengakomodasi rasio aspek lainnya. Misalnya, elemen UI yang mengisi seluruh lebar layar akan tampak ditarik dalam orientasi lanskap. Tambahkan lebar maksimum ke komponen untuk menghindari peregangan.

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

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

  • Mempertahankan status selama perubahan ukuran jendela: Penghapusan orientasi dan batasan rasio aspek dapat menyebabkan perubahan ukuran jendela aplikasi yang sering sebagai respons terhadap cara pengguna lebih suka menggunakan aplikasi, misalnya, dengan memutar, melipat, atau membentangkan perangkat atau dengan mengubah ukuran aplikasi dalam mode jendela multi-aplikasi atau 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 mencirikan dimensi jendela, lalu terapkan tata letak adaptif yang sesuai.

  • Membuat 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 aplikasi diubah ukurannya 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 untuk kemampuan aplikasi diubah ukurannya akan menjadi pengalaman dasar untuk perangkat layar besar (lebar layar terkecil >= 600dp) untuk aplikasi yang menargetkan level API 37. Developer tidak akan memiliki opsi untuk memilih tidak ikut.

Tingkat API target Perangkat yang berlaku Penonaktifan developer diizinkan
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 bersifat khusus untuk app store. Google Play akan mewajibkan aplikasi untuk menargetkan API level 36 mulai Agustus 2026, API level 37 mulai Agustus 2027.

Referensi lainnya