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.