Screen Density: podstata, hustota pixelů v Androidu

Autor: IT Sectr Publikováno: 2026-02-25 Doba čtení: 6 min

Vysvětlujeme podstatu Screen Density (Density Buckets) v Androidu — klasifikaci obrazovek podle hustoty pixelů: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density určuje, kolik fyzických pixelů se vejde na jeden palec obrazovky, a přímo ovlivňuje, jak se obrázky a rozhraní zobrazují na různých zařízeních. Podle Google Android Compatibility Definition (2025) Android podporuje 6 hlavních Density Buckets a až 8 dalších pro skládací zařízení.

Hlavní body

  • Screen Density — počet fyzických pixelů na palec (PPI). Android seskupuje obrazovky do Density Buckets: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi.
  • Základní bucket — mdpi (160 dpi). Všechny ostatní se počítají vůči němu: hdpi = 1.5×, xhdpi = 2×, xxhdpi = 3×, xxxhdpi = 4×.
  • Zdroje pro různé hustoty jsou uloženy v kvalifikovaných složkách res/drawable-{density}.
  • Podle Android Studio (2025) je nejběžnější hustotou na moderních zařízeních xxhdpi (420+ dpi, 3×).
  • Screen Density nezávisí na rozlišení obrazovky — dvě zařízení se stejným rozlišením mohou mít různou hustotu.

Co je Screen Density?

Screen Density (hustota obrazovky) — počet fyzických pixelů na palec obrazovky (ppi — pixels per inch, nebo dpi — dots per inch). Android používá koncept Density Buckets — skupiny obrazovek s podobnou hustotou, pro které se používají stejné faktory měřítka. Na rozdíl od rozlišení (počet pixelů na šířku a výšku) určuje hustota fyzickou velikost pixelu na obrazovce. Podle Google Pixel Team (2025) je hustota moderních vlajkových lodí 450-550 ppi, což odpovídá bucketům xxhdpi-xxxhdpi.

Historie a vývoj Density Buckets

Systém Density Buckets se objevil v Android 1.6 Donut (2009) s prvními zařízeními na 160 dpi (mdpi). S růstem rozlišení obrazovek byly přidávány nové buckety: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Každý nový bucket odrážel 1.5násobné nebo dvojnásobné zvýšení hustoty oproti předchozímu. Podle Android Open Source Project (2025) má v současnosti 96% aktivních Android zařízení hustotu od hdpi do xxxhdpi.

Density Buckets: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi

Density Buckets — rozsahy hustoty definované Googlem pro seskupování Android obrazovek. Základní bucket — mdpi (160 dpi). Faktor měřítka (scale factor) ukazuje, kolikrát je zdroj pro daný bucket větší než pro mdpi. Například xhdpi (2×) znamená, že obrázek musí být 2krát širší a vyšší než jeho verze mdpi. Podle Android Studio Resource Manager (2025) je xxhdpi nejběžnějším bucketem mezi aktivními zařízeními (38% trhu), následovaný xhdpi (28%).

BucketRozsah DPIScalePříklad zařízeníPodíl na trhu (2025)
ldpi120 dpi0.75×Stará levná zařízeníMéně než 1%
mdpi120-160 dpiHTC Dream (G1), 7″ tablety3%
hdpi160-240 dpi1.5×Samsung Galaxy S2, Nexus 412%
xhdpi240-320 dpiGoogle Nexus 5, Moto G28%
xxhdpi320-480 dpiSamsung Galaxy S8, Pixel 338%
xxxhdpi480-640 dpiSamsung Galaxy S24 Ultra, Pixel 9 Pro18%

Hustota pixelů vs rozlišení obrazovky: jaký je rozdíl

Rozlišení obrazovky — celkový počet pixelů na šířku a výšku (např. 1080×2400). Hustota obrazovky — počet pixelů na palec. Dvě zařízení se stejným rozlišením mohou mít různou hustotu, pokud se liší fyzické rozměry obrazovky. Například 6palcový telefon s rozlišením 1080×2400 má hustotu přibližně 440 dpi (xxhdpi), zatímco 5palcový se stejným rozlišením — přibližně 530 dpi (xxxhdpi). To je klíčový rozdíl: rozhraní se musí přizpůsobovat hustotě, nikoli rozlišení, jinak budou prvky na zařízeních s vysokou hustotou příliš malé.

Kvalifikátory zdrojů hustoty v Androidu

Android používá qualifiers v názvech složek res pro načítání zdrojů pro konkrétní hustotu obrazovky: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. Při spuštění aplikace Android vybírá zdroje ze složky, která nejlépe odpovídá hustotě zařízení. Pokud neexistuje přesná shoda, systém vezme nejbližší bucket nebo škáluje zdroj z nižší hustoty. Podle Android Docs (2025) pro vektory (VectorDrawable) nejsou kvalifikátory hustoty potřeba — škálují se automaticky.

XML

/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)

V této struktuře každá složka obsahuje stejnou ikonu, ale v jiné fyzické velikosti v pixelech. Základní velikost 48×48 pixelů pro mdpi se násobí faktorem měřítka pro každý bucket. Android automaticky vybírá potřebný soubor na základě DisplayMetrics.density zařízení. Pro VectorDrawable (formát XML) stačí jeden soubor v drawable/ — systém ho škáluje bez ztráty kvality.

Výpočet pixelů pro každou hustotu

Výpočet velikosti obrázku pro každou hustotu je založen na jednoduchém vzorci: velikost v mdpi × scale factor. Pokud má ikona v mdpi velikost 48×48 px, pak pro hdpi bude 72×72 px (48 × 1.5), pro xhdpi — 96×96 px (48 × 2), pro xxhdpi — 144×144 px (48 × 3), pro xxxhdpi — 192×192 px (48 × 4). Podle Material Design Guidelines (2025) se tento vzorec vztahuje na všechny rastrové zdroje: ikony, pozadí, obrázky a 9-patch.

BucketScaleVelikost mdpi (px)Velikost v bucketu (px)
mdpi48×4848×48
hdpi1.5×48×4872×72
xhdpi48×4896×96
xxhdpi48×48144×144
xxxhdpi48×48192×192

Nejlepší postupy přípravy zdrojů pro všechny hustoty

Správná příprava zdrojů pro Density Buckets zahrnuje pět klíčových pravidel. Za prvé, používejte VectorDrawable pro jednoduché ikony — to eliminuje potřebu pěti kopií. Za druhé, pro rastrové obrázky exportujte všechny hustoty najednou z návrhových nástrojů (Android Studio Asset Studio generuje automaticky). Za třetí, vyhněte se umísťování obrázků do drawable/ bez kvalifikátoru — systém bude škálovat se ztrátou kvality. Za čtvrté, testujte na zařízení s jinou hustotou, než je vaše hlavní — emulátor umožňuje změnu hustoty. Za páté, používejte WebP místo PNG — podle Google (2025) nabízí WebP o 25-35% menší velikost při stejné kvalitě.

  • VectorDrawable — preferovaný formát pro ikony a jednoduché ilustrace. Jeden XML soubor nahrazuje 5 PNG.
  • Android Studio Asset Studio — automatická generace zdrojů pro všechny hustoty z SVG nebo PNG.
  • WebP s lossless — optimální formát pro fotografie. O 30% menší než PNG bez ztráty kvality.
  • 9-patch — pro škálovatelná pozadí. Jeden soubor funguje na všech hustotách při správném nastavení oblastí roztažení.
  • Adaptive Icons — formát ikon pro API 26+. Umožňuje samostatné nastavení foreground a background pro různé hustoty.

Často kladené otázky

Co znamená mdpi v Androidu?

mdpi (medium-density pixel-independent) — základní Density Bucket Androidu s hustotou 160 dpi. Všechny ostatní buckety se počítají vůči mdpi: hdpi — 1.5×, xhdpi — 2× a tak dále. mdpi odpovídá jednomu fyzickému pixelu na jeden density-independent pixel (dp). Designéři se při vytváření návrhů řídí právě mdpi.

Jak zjistím hustotu obrazovky zařízení Android?

Použijte DisplayMetrics: getResources().getDisplayMetrics().density vrací faktor měřítka (1.0 pro mdpi, 3.0 pro xxhdpi). Pro programové určení bucketu zavolejte getResources().getConfiguration().densityDpi. V Android Studio je také Device Explorer, který zobrazuje densityDpi pro připojené zařízení.

Je nutné připravovat zdroje pro všechny hustoty?

Technicky — ano, ale se ztrátou kvality. Pokud zdroj existuje pouze v drawable-xxhdpi, na zařízení mdpi bude 3krát zmenšen — obrázek se rozmaže. Pokud je zdroj pouze v mdpi, na xxhdpi bude zvětšen — dojde k pixelaci. Doporučuje se připravit alespoň pro xhdpi, xxhdpi a xxxhdpi — to pokrývá 84% aktivních zařízení (2025). Pro VectorDrawable stačí jeden soubor bez kvalifikátoru.

Shrnutí

  • Screen Density — počet fyzických pixelů na palec (dpi/ppi). Android seskupuje obrazovky do Density Buckets: mdpi (1×), hdpi (1.5×), xhdpi (2×), xxhdpi (3×), xxxhdpi (4×).
  • Základní bucket mdpi = 160 dpi. Ostatní se počítají jako mdpi × scale factor.
  • Zdroje pro různé hustoty jsou uloženy v kvalifikovaných složkách res/drawable-{bucket}.
  • xxhdpi — nejběžnější bucket (38%), následovaný xhdpi (28%) a xxxhdpi (18%).
  • VectorDrawable nahrazuje 5 rastrových souborů a škáluje se bez ztráty kvality.
  • Používejte WebP místo PNG pro úsporu 30% přenosu dat a místa.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také