Menetapkan dukungan layar yang dibatasi

Meskipun kami sangat menyarankan agar Anda mendesain aplikasi agar dapat beradaptasi dengan semua ukuran dan kepadatan layar, Anda mungkin tetap tidak ingin aplikasi mendukung konfigurasi layar tertentu. Jika demikian, Anda dapat membatasi seberapa banyak Android dapat mengubah ukuran aplikasi atau bahkan membatasi perangkat mana yang dapat menginstalnya, seperti yang dijelaskan di halaman ini.

Sebelum membatasi aplikasi ke layar tertentu, Anda harus memahami semua teknik untuk mendukung beberapa layar dan menerapkannya sebaik mungkin.

Memublikasikan artefak terpisah untuk layar yang berbeda

Jika tidak wajar bagi Anda untuk mem-build satu aplikasi yang mendukung semua konfigurasi layar, Google Play memungkinkan Anda memublikasikan beberapa versi untuk listingan aplikasi yang sama. Anda dapat menggunakan fitur ini untuk menyediakan artefak terpisah yang masing-masing mendukung kumpulan konfigurasi layar yang berbeda (seperti yang dideklarasikan dalam file manifes) tanpa membuat listingan terpisah di Google Play Store.

Misalnya, jika Anda ingin memublikasikan versi handset dan versi tablet aplikasi, tetapi tidak dapat membuat satu APK berfungsi untuk kedua ukuran layar, Anda dapat memublikasikan dua APK untuk listingan aplikasi yang sama. Bergantung pada konfigurasi layar setiap perangkat, Google Play akan mendownload APK yang sesuai dengan ukuran layar setiap perangkat. Perhatikan bahwa saat memublikasikan menggunakan Android App Bundle, APK yang ditayangkan akan dioptimalkan secara otomatis untuk kepadatan layar. Namun, metode yang sama harus digunakan untuk penargetan ukuran layar.

Untuk mengetahui informasi selengkapnya, lihat Membuat Beberapa APK untuk Ukuran Layar yang Berbeda.

Mendeklarasikan rasio lebar tinggi maksimum

Untuk mendukung perangkat sebanyak mungkin, aplikasi harus menyesuaikan tata letaknya secara dinamis untuk memastikan konten dan kontrolnya terlihat dan tertata dengan baik.

Sebagian besar aplikasi juga harus dapat diubah ukurannya sehingga pengguna dapat menjalankannya dalam mode multi-aplikasi. Pengguna dapat meluncurkan aktivitas yang dapat diubah ukurannya dalam mode layar terpisah dan format bebas, serta mengubah ukuran aktivitas dengan menarik sisi atau sudutnya.

Mode multi-aplikasi tersedia untuk semua aplikasi yang berjalan di Android 7.0 (API level 24) atau yang lebih tinggi dan aplikasi dapat diubah ukurannya secara default. Anda juga dapat menetapkan atribut android:resizeableActivity=true secara eksplisit untuk seluruh aplikasi atau aktivitas tertentu.

Android 12 (API level 31) ditetapkan secara default ke mode multi-aplikasi. Pada layar besar (sw >= 600dp), semua aplikasi berjalan dalam mode multi-aplikasi, terlepas dari konfigurasi aplikasi yang digunakan. Jika resizeableActivity="false", aplikasi dialihkan ke mode kompatibilitas saat diperlukan agar sesuai dengan dimensi tampilan. Pada layar kecil (sw < 600 dp), sistem akan memeriksa setelan minWidth, minHeight, dan resizeableActivity aktivitas untuk menentukan apakah aktivitas dapat berjalan dalam mode multi-aplikasi. Jika resizeableActivity="false", aktivitas tidak mendukung mode multi-aplikasi terlepas dari lebar dan tinggi minimum aktivitas.

Pada API level 30 dan yang lebih lama, jika Anda tidak ingin aplikasi atau aktivitas berjalan dalam mode multi-aplikasi, setel resizeableActivity=false. Dalam hal ini, aplikasi selalu muncul dalam layar penuh. Sistem mengontrol cara melakukannya, bergantung pada tingkat Android OS:

  • Jika aplikasi Anda menargetkan Android 8.0 (API level 26) hingga Android 11 (API level 30), aplikasi akan mengisi seluruh layar sesuai dengan tata letaknya.
  • Jika aplikasi Anda menargetkan Android 7.1 (API level 25) atau yang lebih rendah, sistem akan membatasi ukuran antarmuka aplikasi ke jendela dengan rasio aspek 16:9 (sekitar 1,86). Jika aplikasi berjalan di perangkat dengan rasio aspek layar yang lebih besar, aplikasi akan muncul dalam tampilan lebar 16:9 yang menyisakan bagian layar yang tidak digunakan.

Jika tata letak aplikasi tidak dapat beradaptasi dengan rasio aspek yang besar, Anda dapat secara eksplisit menerapkan tampilan lebar di semua level Android OS dengan menetapkan rasio aspek maksimum. Sebaiknya gunakan rasio 2,4 (12:5). Aplikasi akan dijadikan tampilan lebar saat dijalankan di perangkat dengan rasio aspek yang lebih besar dari yang Anda tentukan. Nilai yang Anda pilih minimal harus 1,0 untuk perangkat Wear OS, dan minimal 1,33 untuk perangkat lainnya. Jika Anda menetapkan rasio yang lebih kecil dari batas ini, sistem akan membatasi rasio aspek aplikasi, bergantung pada tingkat OS seperti yang dijelaskan di atas.

Guna menetapkan rasio aspek maksimum untuk Android 8.0 (API level 26) dan yang lebih baru, deklarasikan rasio maksimum menggunakan android:maxAspectRatio dalam tag <activity> Anda. Contoh berikut menunjukkan cara mendeklarasikan rasio lebar tinggi 2,4:

<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<activity android:maxAspectRatio="2.4">
 ...
</activity>

Untuk Android 7.1 dan versi yang lebih lama, tambahkan elemen <meta-data> bernama android.max_aspect dalam elemen <application>, seperti berikut:

<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<meta-data android:name="android.max_aspect" android:value="2.4" />

Jika Anda menetapkan rasio aspek maksimum, jangan lupa untuk menetapkan juga android:resizeableActivity false. Jika tidak, rasio aspek maksimum tidak akan berpengaruh.

Mendeklarasikan ukuran layar maksimum

Meskipun tidak sepenuhnya mengoptimalkan aplikasi untuk mendukung ukuran layar yang berbeda, Android masih dapat merentangkan sebagian besar aplikasi agar sesuai dengan layar yang lebih besar. Jadi hampir tidak pernah perlu untuk mendeklarasikan ukuran layar maksimum.

Dan, jika memutuskan untuk membuat beberapa APK untuk ukuran layar yang berbeda, Anda tidak perlu membatasi APK hanya untuk layar kecil, karena APK yang dioptimalkan untuk layar besar harus memiliki versionCode yang lebih besar, sehingga Google Play selalu memberikan APK tersebut untuk perangkat dengan layar besar.

Namun, jika Anda masih tidak puas dengan cara Android mengubah ukuran aplikasi untuk layar besar, Anda dapat menonaktifkan pengubahan ukuran jika melebihi lebar tertentu dengan menentukan atribut largestWidthLimitDp di tag manifes <supports-screens>. Kemudian, alih-alih mengubah ukuran tata letak, Android akan mengaktifkan mode kompatibilitas layar, yang menggambar tata letak seperti pada ukuran terbesar yang didukung aplikasi Anda, lalu meningkatkan skala semua piksel untuk mengisi layar.

Membatasi aplikasi Anda hanya untuk tablet atau TV

Anda dapat mencegah perangkat handset mendownload aplikasi dengan menggunakan elemen manifes <supports-screens>.

Misalnya, contoh berikut mendeklarasikan bahwa hanya layar besar dan ekstra besar yang dapat menginstal aplikasi:

<manifest ... >
    <supports-screens android:smallScreens="false"
                      android:normalScreens="false"
                      android:largeScreens="true"
                      android:xlargeScreens="true"/>
    ...
</manifest>

Membatasi aplikasi Anda hanya untuk ukuran dan kepadatan tertentu

Anda dapat menentukan ukuran dan kepadatan layar yang tepat yang didukung aplikasi Anda menggunakan elemen manifes <compatible-screens>. Namun, sebaiknya Anda tidak menggunakannya karena kombinasi ukuran dan kepadatan yang tidak Anda tetapkan dianggap sebagai konfigurasi layar yang tidak kompatibel dengan aplikasi Anda. Jadi, menggunakan elemen ini akan memudahkan pemblokiran aplikasi Anda dari banyak perangkat yang sebenarnya dapat didukung aplikasi Anda.

Elemen <compatible-screens> harus berisi satu atau beberapa elemen <screen>. Setiap elemen <screen> menentukan konfigurasi layar yang kompatibel dengan aplikasi Anda, menggunakan atribut android:screenSize dan android:screenDensity. Setiap elemen <screen> harus menyertakan kedua atribut untuk menentukan konfigurasi layar individual. Jika salah satu atribut hilang, elemen tersebut tidak valid (layanan eksternal seperti Google Play akan mengabaikannya).

Berikut tampilan entri manifes yang akan Anda jumpai jika aplikasi hanya kompatibel dengan ukuran layar kecil dan normal (dan subset kepadatan layar):

<manifest ... >
    <compatible-screens>
        <!-- all small size screens -->
        <screen android:screenSize="small" android:screenDensity="ldpi" />
        <screen android:screenSize="small" android:screenDensity="mdpi" />
        <screen android:screenSize="small" android:screenDensity="hdpi" />
        <screen android:screenSize="small" android:screenDensity="xhdpi" />
        <!-- all normal size screens -->
        <screen android:screenSize="normal" android:screenDensity="ldpi" />
        <screen android:screenSize="normal" android:screenDensity="mdpi" />
        <screen android:screenSize="normal" android:screenDensity="hdpi" />
        <screen android:screenSize="normal" android:screenDensity="xhdpi" />
    </compatible-screens>
    ...
    <application ... >
        ...
    <application>
</manifest>

Kombinasi ukuran dan kepadatan yang tidak dideklarasikan secara eksplisit di sini akan dibatasi agar tidak dapat menginstal aplikasi.