Screen Density: essensen, pixeldensitet i Android

Författare: IT Sectr Publicerad: 2026-02-25 Lästid: 6 min

Vi förklarar essensen av Screen Density (Density Buckets) i Android — klassificeringen av skärmar efter pixeldensitet: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density avgör hur många fysiska pixlar som får plats på en tum av skärmen och påverkar direkt hur bilder och gränssnitt visas på olika enheter. Enligt Google Android Compatibility Definition (2025) stöder Android 6 primära Density Buckets och upp till 8 ytterligare för vikbara enheter.

Huvudpunkter

  • Screen Density — antalet fysiska pixlar per tum (PPI). Android grupperar skärmar i Density Buckets: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi.
  • >Den grundläggande bucket — mdpi (160 dpi). Alla andra beräknas relativt den: hdpi = 1.5×, xhdpi = 2×, xxhdpi = 3×, xxxhdpi = 4×.
  • Resurser för olika densiteter lagras i kvalificerade mappar res/drawable-{density}.
  • Enligt Android Studio (2025) är den vanligaste densiteten på moderna enheter xxhdpi (420+ dpi, 3×).
  • Screen Density är oberoende av skärmupplösning — två enheter med samma upplösning kan ha olika densitet.
  • Vad är Screen Density?

    Screen Density (skärmdensitet) — antalet fysiska pixlar per tum skärm (ppi — pixels per inch, eller dpi — dots per inch). Android använder konceptet Density Buckets — grupper av skärmar med liknande densitet som samma skalningsfaktorer tillämpas på. Till skillnad från upplösning (antal pixlar i bredd och höjd) bestämmer densiteten den fysiska storleken på en pixel på skärmen. Enligt Google Pixel Team (2025) är densiteten för moderna flaggskepp 450-550 ppi, vilket motsvarar buckets xxhdpi-xxxhdpi.

    Historia och utveckling av Density Buckets

    Systemet med Density Buckets dök upp i Android 1.6 Donut (2009) med de första enheterna på 160 dpi (mdpi). I takt med att skärmupplösningen ökade lades nya buckets till: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Varje ny bucket återspeglade en 1.5- eller 2-faldig ökning av densiteten jämfört med den föregående. Enligt Android Open Source Project (2025) har för närvarande 96% av aktiva Android-enheter en densitet från hdpi till xxxhdpi.

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

    Density Buckets — densitetsintervall definierade av Google för att gruppera Android-skärmar. Den grundläggande bucket — mdpi (160 dpi). Skalningsfaktorn (scale factor) visar hur många gånger resursen för en viss bucket är större än för mdpi. Till exempel innebär xhdpi (2×) att bilden måste vara 2 gånger bredare och högre än sin mdpi-version. Enligt Android Studio Resource Manager (2025) är xxhdpi den vanligaste bucket bland aktiva enheter (38% av marknaden), följt av xhdpi (28%).

    BucketDPI-intervallScaleExempelenhetMarknadsandel (2025)
    ldpi120 dpi0.75×Gamla budgetenheterMindre än 1%
    mdpi120-160 dpiHTC Dream (G1), 7″ surfplattor3%
    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%

    Pixeldensitet vs skärmupplösning: vad är skillnaden

    Skärmupplösning — det totala antalet pixlar i bredd och höjd (t.ex. 1080×2400). Skärmdensitet — antalet pixlar per tum. Två enheter med samma upplösning kan ha olika densitet om skärmens fysiska storlek skiljer sig. Till exempel har en 6-tums telefon med upplösningen 1080×2400 en densitet på cirka 440 dpi (xxhdpi), medan en 5-tums telefon med samma upplösning har cirka 530 dpi (xxxhdpi). Detta är den avgörande skillnaden: gränssnittet måste anpassa sig till densiteten, inte upplösningen, annars blir elementen för små på enheter med hög densitet.

    Densitetsresurskvalificerare i Android

    Android använder qualifiers i namn på res-mappar för att ladda resurser för en specifik skärmdensitet: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. När appen startar väljer Android resurser från mappen som bäst matchar enhetens densitet. Om det inte finns någon exakt matchning tar systemet den närmaste bucket eller skalar resursen från en lägre densitet. Enligt Android Docs (2025) behövs inga densitetskvalificerare för vektorer (VectorDrawable) — de skalas automatiskt.

    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)
    

    I denna struktur innehåller varje mapp samma ikon, men i olika fysisk storlek i pixlar. Grundstorleken 48×48 pixlar för mdpi multipliceras med skalningsfaktorn för varje bucket. Android väljer automatiskt den nödvändiga filen baserat på enhetens DisplayMetrics.density. För VectorDrawable (XML-format) räcker en fil i drawable/ — systemet skalar den utan kvalitetsförlust.

    Pixelberäkning för varje densitet

    Storleksberäkning av bilden för varje densitet baseras på en enkel formel: storlek i mdpi × scale factor. Om ikonen i mdpi har storleken 48×48 px, blir den för hdpi 72×72 px (48 × 1.5), för xhdpi — 96×96 px (48 × 2), för xxhdpi — 144×144 px (48 × 3), för xxxhdpi — 192×192 px (48 × 4). Enligt Material Design Guidelines (2025) tillämpas denna formel för alla rasterresurser: ikoner, bakgrunder, bilder och 9-patch.

    BucketScaleStorlek mdpi (px)Storlek i bucket (px)
    mdpi48×4848×48
    hdpi1.5×48×4872×72
    xhdpi48×4896×96
    xxhdpi48×48144×144
    xxxhdpi48×48192×192

    Bästa praxis för att förbereda resurser för alla densiteter

    Korrekt förberedelse av resurser för Density Buckets omfattar fem viktiga regler. För det första, använd VectorDrawable för enkla ikoner — detta eliminerar behovet av fem kopior. För det andra, för rasterbilder, exportera alla densiteter samtidigt från designverktyg (Android Studio Asset Studio genererar automatiskt). För det tredje, undvik att placera bilder i drawable/ utan kvalificerare — systemet kommer att skala med kvalitetsförlust. För det fjärde, testa på en enhet med annan densitet än din primära — emulatorn tillåter ändring av densitet. För det femte, använd WebP istället för PNG — enligt Google (2025) ger WebP 25-35% mindre storlek vid samma kvalitet.

    • VectorDrawable — föredraget format för ikoner och enkla illustrationer. En XML-fil ersätter 5 PNG-filer.
    • Android Studio Asset Studio — automatisk generering av resurser för alla densiteter från SVG eller PNG.
    • WebP med lossless — optimalt format för fotografier. 30% mindre än PNG utan kvalitetsförlust.
    • 9-patch — för skalbara bakgrunder. En fil fungerar på alla densiteter med korrekt inställning av sträckningsområden.
    • Adaptive Icons — ikonformat för API 26+. Möjliggör separat inställning av foreground och background för olika densiteter.

    Vanliga frågor

    Vad betyder mdpi i Android?

    mdpi (medium-density pixel-independent) — den grundläggande Density Bucket i Android med en densitet på 160 dpi. Alla andra buckets beräknas i förhållande till mdpi: hdpi — 1.5×, xhdpi — 2× och så vidare. mdpi motsvarar en fysisk pixel per density-independent pixel (dp). Designers utgår från mdpi när de skapar layouter.

    Hur tar jag reda på skärmdensiteten på en Android-enhet?

    Använd DisplayMetrics: getResources().getDisplayMetrics().density returnerar skalningsfaktorn (1.0 för mdpi, 3.0 för xxhdpi). För programmeringsmässig bestämning av bucket, anropa getResources().getConfiguration().densityDpi. I Android Studio finns också Device Explorer som visar densityDpi för den anslutna enheten.

    Måste jag förbereda resurser för alla densiteter?

    Tekniskt — ja, men med kvalitetsförlust. Om resursen bara finns i drawable-xxhdpi, kommer den på en mdpi-enhet att minskas 3 gånger — bilden blir suddig. Om resursen bara finns i mdpi, kommer den på xxhdpi att förstoras — pixelering uppstår. Rekommenderas att förbereda åtminstone för xhdpi, xxhdpi och xxxhdpi — detta täcker 84% av aktiva enheter (2025). För VectorDrawable räcker en fil utan kvalificerare.

    Sammanfattning

    • Screen Density — antalet fysiska pixlar per tum (dpi/ppi). Android grupperar skärmar i Density Buckets: mdpi (1×), hdpi (1.5×), xhdpi (2×), xxhdpi (3×), xxxhdpi (4×).
    • Den grundläggande bucket mdpi = 160 dpi. De andra beräknas som mdpi × scale factor.
    • Resurser för olika densiteter lagras i kvalificerade mappar res/drawable-{bucket}.
    • xxhdpi — den vanligaste bucket (38%), följt av xhdpi (28%) och xxxhdpi (18%).
    • VectorDrawable ersätter 5 rasterfiler och skalas utan kvalitetsförlust.
    • Använd WebP istället för PNG för att spara 30% trafik och lagringsutrymme.

    Vi utvecklar en mobil applikation nyckelfärdigt

    IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

    Diskutera projektet

    Läs också