Menjelaskan esensi Screen Density (Density Buckets) di Android — klasifikasi layar berdasarkan kepadatan piksel: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density menentukan berapa banyak piksel fisik yang muat dalam satu inci layar dan secara langsung memengaruhi bagaimana gambar dan antarmuka ditampilkan di berbagai perangkat. Menurut Google Android Compatibility Definition (2025), Android mendukung 6 Density Buckets utama dan hingga 8 tambahan untuk perangkat lipat.
Poin Utama
Screen Density (kepadatan layar) — jumlah piksel fisik per inci layar (ppi — pixels per inch, atau dpi — dots per inch). Android menggunakan konsep Density Buckets — kelompok layar dengan kepadatan serupa yang menerapkan faktor penskalaan yang sama. Berbeda dengan resolusi (jumlah piksel dalam lebar dan tinggi), kepadatan menentukan ukuran fisik piksel pada layar. Menurut Google Pixel Team (2025), kepadatan flagship modern adalah 450-550 ppi, yang sesuai dengan bucket xxhdpi-xxxhdpi.
Sistem Density Buckets muncul di Android 1.6 Donut (2009) dengan perangkat pertama pada 160 dpi (mdpi). Seiring meningkatnya resolusi layar, bucket baru ditambahkan: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Setiap bucket baru mencerminkan peningkatan kepadatan 1.5 atau 2 kali lipat dari sebelumnya. Menurut Android Open Source Project (2025), saat ini 96% perangkat Android aktif memiliki kepadatan dari hdpi hingga xxxhdpi.
Density Buckets — rentang kepadatan yang ditentukan oleh Google untuk mengelompokkan layar Android. Bucket dasar — mdpi (160 dpi). Faktor skala (scale factor) menunjukkan berapa kali sumber daya untuk bucket tertentu lebih besar daripada mdpi. Misalnya, xhdpi (2×) berarti gambar harus 2 kali lebih lebar dan tinggi dari versi mdpi-nya. Menurut Android Studio Resource Manager (2025), xxhdpi adalah bucket paling umum di antara perangkat aktif (38% pasar), diikuti oleh xhdpi (28%).
| Bucket | Rentang DPI | Scale | Contoh perangkat | Pangsa pasar (2025) |
|---|---|---|---|---|
| ldpi | 120 dpi | 0.75× | Perangkat anggaran lama | Kurang dari 1% |
| mdpi | 120-160 dpi | 1× | HTC Dream (G1), tablet 7″ | 3% |
| hdpi | 160-240 dpi | 1.5× | Samsung Galaxy S2, Nexus 4 | 12% |
| xhdpi | 240-320 dpi | 2× | Google Nexus 5, Moto G | 28% |
| xxhdpi | 320-480 dpi | 3× | Samsung Galaxy S8, Pixel 3 | 38% |
| xxxhdpi | 480-640 dpi | 4× | Samsung Galaxy S24 Ultra, Pixel 9 Pro | 18% |
Resolusi layar — jumlah total piksel dalam lebar dan tinggi (misalnya 1080×2400). Kepadatan layar — jumlah piksel per inci. Dua perangkat dengan resolusi sama dapat memiliki kepadatan berbeda jika ukuran fisik layar berbeda. Misalnya, ponsel 6 inci dengan resolusi 1080×2400 memiliki kepadatan sekitar 440 dpi (xxhdpi), sedangkan ponsel 5 inci dengan resolusi yang sama — sekitar 530 dpi (xxxhdpi). Ini perbedaan utama: antarmuka harus beradaptasi dengan kepadatan, bukan resolusi, jika tidak elemen akan terlalu kecil pada perangkat dengan kepadatan tinggi.
Android menggunakan qualifiers dalam nama folder res untuk memuat sumber daya untuk kepadatan layar tertentu: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. Saat aplikasi dijalankan, Android memilih sumber daya dari folder yang paling sesuai dengan kepadatan perangkat. Jika tidak ada kecocokan tepat, sistem mengambil bucket terdekat atau menskalakan sumber daya dari kepadatan lebih rendah. Menurut Android Docs (2025), untuk vektor (VectorDrawable) kualifikasi kepadatan tidak diperlukan — mereka diskalakan secara otomatis.
/res/
drawable-mdpi/
icon_app.png (48x48 px)
drawable-hdpi/
icon_app.png (72x72 px)
drawable-xhdpi/
icon_app.png (96x96 px)
drawable-xxhdpi/
icon_app.png (144x144 px)
drawable-xxxhdpi/
icon_app.png (192x192 px)
Dalam struktur ini, setiap folder berisi ikon yang sama, tetapi dalam ukuran fisik berbeda dalam piksel. Ukuran dasar 48×48 piksel untuk mdpi dikalikan dengan faktor skala untuk setiap bucket. Android secara otomatis memilih file yang diperlukan berdasarkan DisplayMetrics.density perangkat. Untuk VectorDrawable (format XML) satu file di drawable/ sudah cukup — sistem menskalakannya tanpa kehilangan kualitas.
Perhitungan ukuran gambar untuk setiap kepadatan didasarkan pada rumus sederhana: ukuran di mdpi × scale factor. Jika ikon di mdpi berukuran 48×48 px, maka untuk hdpi menjadi 72×72 px (48 × 1.5), untuk xhdpi — 96×96 px (48 × 2), untuk xxhdpi — 144×144 px (48 × 3), untuk xxxhdpi — 192×192 px (48 × 4). Menurut Material Design Guidelines (2025), rumus ini berlaku untuk semua sumber daya raster: ikon, latar belakang, gambar, dan 9-patch.
| Bucket | Scale | Ukuran mdpi (px) | Ukuran di bucket (px) |
|---|---|---|---|
| mdpi | 1× | 48×48 | 48×48 |
| hdpi | 1.5× | 48×48 | 72×72 |
| xhdpi | 2× | 48×48 | 96×96 |
| xxhdpi | 3× | 48×48 | 144×144 |
| xxxhdpi | 4× | 48×48 | 192×192 |
Persiapan yang benar sumber daya untuk Density Buckets mencakup lima aturan utama. Pertama, gunakan VectorDrawable untuk ikon sederhana — ini menghilangkan kebutuhan akan lima salinan. Kedua, untuk gambar raster, ekspor semua kepadatan sekaligus dari alat desain (Android Studio Asset Studio menghasilkan secara otomatis). Ketiga, hindari menempatkan gambar di drawable/ tanpa kualifikasi — sistem akan menskalakan dengan kehilangan kualitas. Keempat, uji pada perangkat dengan kepadatan berbeda dari perangkat utama Anda — emulator memungkinkan mengubah kepadatan. Kelima, gunakan WebP daripada PNG — menurut Google (2025), WebP memberikan ukuran 25-35% lebih kecil dengan kualitas yang sama.
Pertanyaan yang Sering Diajukan
mdpi (medium-density pixel-independent) — Density Bucket dasar Android dengan kepadatan 160 dpi. Semua bucket lainnya dihitung relatif terhadap mdpi: hdpi — 1.5×, xhdpi — 2× dan seterusnya. mdpi sesuai dengan satu piksel fisik per density-independent pixel (dp). Desainer berpedoman pada mdpi saat membuat tata letak.
Gunakan DisplayMetrics: getResources().getDisplayMetrics().density mengembalikan faktor skala (1.0 untuk mdpi, 3.0 untuk xxhdpi). Untuk menentukan bucket secara terprogram, panggil getResources().getConfiguration().densityDpi. Di Android Studio juga terdapat Device Explorer yang menampilkan densityDpi untuk perangkat yang terhubung.
Secara teknis — ya, tetapi dengan kehilangan kualitas. Jika sumber daya hanya ada di drawable-xxhdpi, pada perangkat mdpi akan diperkecil 3 kali — gambar menjadi buram. Jika sumber daya hanya di mdpi, pada xxhdpi akan diperbesar — terjadi pikselasi. Disarankan untuk menyiapkan setidaknya untuk xhdpi, xxhdpi, dan xxxhdpi — ini mencakup 84% perangkat aktif (2025). Untuk VectorDrawable satu file tanpa kualifikasi sudah cukup.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga