Објашњавамо суштину Screen Density (Density Buckets) у Android-у — класификацију екрана по густини пиксела: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density одређује колико физичких пиксела стаје у један инч екрана и директно утиче на то како се слике и интерфејс приказују на различитим уређајима. Према Google Android Compatibility Definition (2025), Android подржава 6 главних Density Buckets и до 8 додатних за склопиве уређаје.
Главно
Screen Density (густина екрана) — број физичких пиксела који стаје на један инч екрана (ppi — pixels per inch, или dpi — dots per inch). Android користи концепт Density Buckets — групе екрана сличне густине за које се примењују исти фактори скалирања. За разлику од резолуције (број пиксела по ширини и висини), густина одређује физичку величину пиксела на екрану. Према Google Pixel Team (2025), густина савремених водећих модела износи 450-550 ppi, што одговара bucket-има xxhdpi-xxxhdpi.
Систем Density Buckets се појавио у Android 1.6 Donut (2009) са првим уређајима на 160 dpi (mdpi). Са порастом резолуције екрана додавани су нови bucket-и: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Сваки нови bucket одражавао је полуторно или двоструко повећање густине у односу на претходни. Према Android Open Source Project (2025), тренутно 96% активних Android уређаја има густину од hdpi до xxxhdpi.
Density Buckets — опсези густине које је дефинисао Google за груписање Android екрана. Основни bucket — mdpi (160 dpi). Фактор скалирања (scale factor) показује колико је пута ресурс за дати bucket већи од mdpi. На пример, xhdpi (2×) значи да слика треба да буде 2 пута већа по ширини и висини од своје mdpi верзије. Према Android Studio Resource Manager (2025), xxhdpi је најзаступљенији bucket међу активним уређајима (38% тржишта), затим xhdpi (28%).
| Bucket | DPI опсег | Scale | Пример уређаја | Удео на тржишту (2025) |
|---|---|---|---|---|
| ldpi | 120 dpi | 0.75× | Стари буџетски уређаји | Мање од 1% |
| mdpi | 120-160 dpi | 1× | HTC Dream (G1), таблети 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% |
Резолуција екрана — укупан број пиксела по ширини и висини (нпр. 1080×2400). Густина екрана — број пиксела по инчу. Два уређаја са истом резолуцијом могу имати различиту густину ако се физичке димензије екрана разликују. На пример, телефон од 6 инча са резолуцијом 1080×2400 има густину око 440 dpi (xxhdpi), а телефон од 5 инча са истом резолуцијом — око 530 dpi (xxxhdpi). Ово је кључна разлика: интерфејс треба да се прилагођава густини, а не резолуцији, иначе ће елементи бити превише мали на уређајима са високом густином.
Android користи qualifiers у именима res фасцикли за учитавање ресурса за одређену густину екрана: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. При покретању апликације, Android бира ресурсе из фасцикле која најбоље одговара густини уређаја. Ако нема тачног поклапања, систем узима најближи bucket или скалира ресурс из ниже густине. Према Android Docs (2025), за векторе (VectorDrawable) квалификатори густине нису потребни — скалирају се аутоматски.
/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)
У овој структури свака фасцикла садржи исту икону, али у различитој физичкој величини у пикселима. Основна величина 48×48 пиксела за mdpi множи се са scale factor-ом за сваки bucket. Android аутоматски бира потребну датотеку на основу DisplayMetrics.density уређаја. За VectorDrawable (XML формат) довољна је једна датотека у drawable/ — систем је скалира без губитка квалитета.
Израчунавање величине слике за сваку густину заснива се на једноставној формули: величина у mdpi × scale factor. Ако икона у mdpi има величину 48×48 px, онда за hdpi износи 72×72 px (48 × 1.5), за xhdpi — 96×96 px (48 × 2), за xxhdpi — 144×144 px (48 × 3), за xxxhdpi — 192×192 px (48 × 4). Према Material Design Guidelines (2025), ова формула се примењује за све растерске ресурсе: иконе, позадине, слике и 9-patch.
| Bucket | Scale | Величина mdpi (px) | Величина у 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 |
Правилна припрема ресурса за Density Buckets укључује пет кључних правила. Прво, користите VectorDrawable за једноставне иконе — то елиминише потребу за пет копија. Друго, за растерске слике извезите све густине одједном из алата за дизајн (Android Studio Asset Studio генерише аутоматски). Треће, избегавајте постављање слика у drawable/ без квалификатора — систем ће скалирати са губитком квалитета. Четврто, тестирајте на уређају са густином која се разликује од вашег главног — емулатор омогућава промену густине. Пето, користите WebP уместо PNG — према Google (2025), WebP даје 25-35% мању величину уз исти квалитет.
Често постављана питања
mdpi (medium-density pixel-independent) — основни Density Bucket Android-а са густином од 160 dpi. Сви остали bucket-и се рачунају у односу на mdpi: hdpi — 1.5×, xhdpi — 2× и тако даље. mdpi одговара једном физичком пикселу по density-independent pixel (dp). Дизајнери се оријентишу управо на mdpi приликом креирања макета.
Користите DisplayMetrics: getResources().getDisplayMetrics().density враћа scale factor (1.0 за mdpi, 3.0 за xxhdpi). За програмско одређивање bucket-а позовите getResources().getConfiguration().densityDpi. У Android Studio такође постоји Device Explorer који приказује densityDpi за повезани уређај.
Технички — да, али са губитком квалитета. Ако ресурс постоји само у drawable-xxhdpi, на mdpi уређају биће смањен 3 пута — слика ће постати замућена. Ако је ресурс само у mdpi, на xxhdpi биће увећан — појавиће се пикселизација. Препоручује се припрема барем за xhdpi, xxhdpi и xxxhdpi — то покрива 84% активних уређаја (2025). За VectorDrawable довољна је једна датотека без квалификатора.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође