Menetapkan dukungan layar yang dibatasi

Meskipun kami sangat menyarankan Anda untuk 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 semaksimal mungkin.

Publikasikan APK terpisah untuk layar yang berbeda

Jika tidak wajar bagi Anda untuk membuild APK tunggal yang mendukung semua konfigurasi layar, Google Play memungkinkan Anda untuk memublikasikan beberapa APK untuk listingan aplikasi yang sama. Anda dapat menggunakan fitur ini untuk menyediakan APK terpisah yang 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 ponsel dan versi tablet aplikasi, tetapi tidak dapat membuat satu APK yang berfungsi di kedua ukuran layar tersebut, 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.

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

Mendeklarasikan rasio tinggi lebar maksimum

Untuk mendukung perangkat sebanyak mungkin, suatu 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 agar pengguna dapat menjalankannya di 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 baru dan aplikasi dapat diubah ukurannya secara default. Anda juga dapat menetapkan secara jelas android:resizeableActivity true atribut untuk keseluruhan aplikasi atau aktivitas tertentu.

Jika Anda tidak ingin aplikasi atau aktivitas berjalan dalam mode multi-aplikasi, setel android:resizeableActivity false. Dalam hal ini, aplikasi akan selalu muncul di layar penuh. Sistem akan mengontrol cara kerjanya, bergantung pada level OS Android:

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

Jika tata letak aplikasi tidak dapat beradaptasi dengan rasio tinggi lebar yang besar, Anda dapat menerapkan tampilan lebar secara eksplisit di semua level OS Android dengan menyetel rasio tinggi lebar maksimum. Sebaiknya gunakan rasio 2,4 (12:5). Aplikasi akan ditampilkan lebar jika dijalankan di perangkat dengan rasio tinggi lebar 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 tinggi lebar aplikasi Anda bergantung pada tingkat OS seperti yang dijelaskan di atas.

Untuk menyetel rasio tinggi lebar maksimum untuk Android 8.0 (API level 26) dan versi lebih tinggi, deklarasikan rasio maksimal menggunakan android:MaxAspectRatio dalam tag <activity> Anda. Contoh berikut menunjukkan cara mendeklarasikan rasio tinggi lebar 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 lebih rendah, tambahkan elemen <meta-data> 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 menetapkan rasio tinggi lebar, jangan lupa untuk juga menetapkan android:resizeableActivity false. Jika tidak, rasio tinggi lebar tidak akan berpengaruh.

Mendeklarasikan ukuran layar maksimum

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

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

Akan tetapi, jika Anda masih tidak puas dengan cara Android mengubah ukuran aplikasi untuk layar besar, Anda dapat menonaktifkan pengubahan ukuran di luar lebar tertentu dengan menetapkan atribut largestWidthLimitDp dalam tag manifes <supports-screens>. Kemudian, sebagai ganti mengubah ukuran tata letak, Android akan mengaktifkan mode kompatibilitas layar, yang menggambar tata letak seperti yang Anda inginkan pada ukuran terbesar yang didukung aplikasi Anda, kemudian meningkatkan skala semua piksel untuk memenuhi layar.

Membatasi aplikasi Anda hanya untuk tablet atau TV

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

Misalnya, hal berikut mendeklarasikan bahwa aplikasi Anda hanya dapat diinstal di layar besar dan xlarge:

<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>. Akan tetapi, kami sangat menyarankan agar Anda tidak menggunakannya karena kombinasi ukuran dan kepadatan yang tidak Anda tentukan dianggap sebagai konfigurasi layar yang tidak kompatibel dengan aplikasi Anda. Jadi, menggunakan elemen ini akan memudahkan Anda memblokir aplikasi dari banyak perangkat yang sebenarnya dapat didukung aplikasi Anda.

<compatible-screens> harus berisi satu atau beberapa elemen <screen>. Setiap elemen <screen> menentukan konfigurasi layar yang kompatibel dengan aplikasi Anda, dengan atribut android:screenSize dan android:screenDensity. Masing-masing 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).

Seperti inilah tampilan manifes terlihat jika aplikasi Anda 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 dinyatakan secara eksplisit di sini akan dibatasi dari penginstalan aplikasi.