Mendeklarasikan dukungan layar terbatas

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

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

Memublikasikan APK terpisah untuk layar berbeda

Jika tidak memungkinkan bagi Anda untuk mem-build satu APK yang mendukung semua konfigurasi layar, Google Play mengizinkan Anda memublikasikan beberapa APK untuk daftar aplikasi yang sama. Anda bisa menggunakan fitur ini untuk menyediakan APK terpisah yang masing-masing mendukung set konfigurasi layar yang berbeda (seperti yang dideklarasikan dalam file manifes) tanpa membuat daftar terpisah di Google Play Store.

Misalnya, jika Anda ingin memublikasikan versi handset dan versi tablet aplikasi, tetapi Anda tidak bisa membuat satu APK yang bekerja untuk kedua ukuran layar tersebut, Anda dapat memublikasikan dua APK untuk daftar aplikasi yang sama. Bergantung pada konfigurasi layar masing-masing perangkat, Google Play akan mendownload APK yang sesuai dengan ukuran layar masing-masing perangkat.

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

Mendeklarasikan rasio aspek maksimum

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

Sebagian besar aplikasi juga harus dapat diubah ukurannya sehingga pengguna bisa menjalankannya dalam mode multi-jendela. Pengguna bisa meluncurkan aktivitas yang dapat diubah ukurannya dalam mode split-screen dan freeform, dan mengubah ukuran aktivitas dengan menarik sisi atau sudutnya.

Mode multi-jendela 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 bisa secara eksplisit menyetel atribut android:resizeableActivity true untuk seluruh aplikasi, atau aktivitas tertentu.

Jika Anda tidak menginginkan aplikasi atau aktivitas Anda berjalan dalam mode multi-jendela, setel android:resizeableActivity false. Dalam kasus ini, aplikasi selalu ditampilkan selayar penuh. Sistem akan mengontrol bagaimana hal ini dilakukan, tergantung level Android OS:

  • Jika aplikasi Anda menargetkan Android 8.0 (API level 26) atau yang lebih tinggi, aplikasi akan memenuhi seluruh layar, sesuai dengan layoutnya.
  • Jika aplikasi Anda menargetkan Android 7.1 (API level 25) atau yang lebih rendah, sistem membatasi ukuran antarmuka aplikasi untuk jendela dengan rasio aspek 16:9 (sekitar 1,86). Jika aplikasi berjalan di perangkat dengan rasio aspek layar yang lebih besar, aplikasi akan ditampilkan dalam letterbox 16:9 yang menyebabkan sebagian layar tidak digunakan.

Jika layout aplikasi Anda tidak bisa beradaptasi dengan rasio aspek sembarang berukuran besar, Anda dapat secara eksplisit memaksakan ditampilkan dalam letterbox pada semua level Android OS dengan menyetel rasio aspek maksimum. Kami merekomendasikan rasio 2,4 (12:5). Aplikasi Anda akan ditampilkan dalam letterbox ketika berjalan pada perangkat dengan rasio aspek lebih besar daripada yang sudah ditetapkan. Nilai yang Anda pilih harus setidaknya 1,0 untuk perangkat Wear OS, dan setidaknya 1,33 untuk perangkat lainnya. Jika Anda menetapkan rasio yang lebih kecil dari batas ini, sistem akan membatasi rasio aspek aplikasi Anda bergantung pada level OS seperti yang dijelaskan di atas.

Untuk menyetel rasio aspek maksimum bagi Android 8.0 (API level 26) dan yang lebih tinggi, deklarasikan rasio maks menggunakan android:MaxAspectRatio dalam tag <activity> Anda. Contoh berikut menunjukkan cara mendeklarasikan rasio aspek maksimum 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 yang lebih rendah, tambahkan elemen <meta-data> yang bernama android.max_aspect dalam elemen <application>, sebagai 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 menyetel rasio aspek maksimum, jangan lupa juga untuk menyetel android:resizeableActivity false. Jika tidak, rasio aspek maksimum tidak berpengaruh apa pun.

Catatan: Jika aplikasi Anda tidak dapat diubah ukurannya, Anda harus menguji bagaimana kinerjanya pada sebanyak mungkin perangkat. Periksa dan lihat apakah semua kontrol terlihat. Beberapa perangkat mengizinkan pengguna memaksakan aplikasi ke tampilan selayar penuh, yang akan mengubah ukurannya.

Mendeklarasikan ukuran layar maksimum

Bahkan jika Anda tidak sepenuhnya mengoptimalkan aplikasi untuk mendukung ukuran layar berbeda, Android tetap bisa merentangkan sebagian besar aplikasi agar pas dengan layar yang lebih besar. Jadi, mendeklarasikan ukuran layar maksimum hampir tidak diperlukan.

Dan jika Anda 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, jadi 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 bisa menonaktifkan pengubahan ukuran jika melebihi lebar tertentu dengan menetapkan atribut largestWidthLimitDp dalam tag manifes <supports-screens>. Kemudian, alih-alih mengubah ukuran layout Anda, Android mengaktifkan mode kompatibilitas layar, yang menggambar layout seperti pada ukuran terbesar yang didukung aplikasi Anda, kemudian memperbesar semua piksel untuk mengisi layar.

Membatasi aplikasi Anda hanya untuk tablet atau TV

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

Misalnya, kode berikut mendeklarasikan bahwa hanya layar large dan xlarge yang bisa menginstal aplikasi Anda:

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

Membatasi aplikasi Anda hanya untuk kepadatan dan ukuran tertentu

Anda bisa menentukan kepadatan dan ukuran layar yang tepat yang didukung aplikasi Anda menggunakan elemen manifes <compatible-screens>. Namun kami sangat tidak merekomendasikan penggunaannya karena setiap kombinasi ukuran dan kepadatan yang tidak Anda tetapkan dianggap sebagai konfigurasi layar yang tidak kompatibel dengan aplikasi Anda. Jadi, menggunakan elemen ini membuat aplikasi Anda mudah terblokir dari banyak perangkat yang sebenarnya bisa 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, maka elemen tersebut tidak valid (layanan eksternal seperti Google Play akan mengabaikannya).

Inilah tampilan entri manifes jika aplikasi Anda hanya kompatibel dengan ukuran layar normal dan kecil (dan subset dari 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>

Setiap kombinasi kepadatan dan ukuran yang tidak secara eksplisit dideklarasikan di sini akan dilarang menginstal aplikasi.