px: essensen, fysiska pixlar inom mobilutveckling

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

px — fysisk pixel, det minsta bildelementet på en enhets skärm. Inom mobilutveckling används px som basenhet för skärmupplösning och pixeldensitet (PPI), men används praktiskt taget inte för gränssnittslayout — istället används de logiska enheterna pt, dp och sp. Artikeln förklarar hur px skiljer sig från logiska enheter, hur upplösning och PPI hänger ihop, och varför direkt användning av px i kod är ett antimönster.

Huvudpunkter

  • px — fysisk pixel på displayen som inte tar hänsyn till skärmdensiteten (PPI)
  • Skärmupplösning i px — antal pixlar i bredd och höjd, till exempel 1179 × 2556 px
  • PPI — pixeldensitet per tum, den främsta indikatorn på bildskärpa
  • Logiska enheter (dp, pt, sp) abstraherar px och anpassar gränssnittet till olika skärmar
  • Användning av px i kod — antimönster, eftersom gränssnittet inte kommer att visas korrekt på enheter med olika densitet

Vad är px?

px (pixel, picture element) — det minsta adresserbara elementet i en rasterbild eller display. Varje pixel lagrar färginformation i RGB-modellen (röd, grön, blå) med ett färgdjup på 8 till 10 bitar per kanal. Moderna mobila displayer innehåller miljontals pixlar: iPhone 15 Pro — 3 miljoner, iPad Pro 12.9" — 5.6 miljoner pixlar.

Den fysiska storleken på en pixel beror på displaydensiteten (PPI). På en enhet med 326 PPI (iPhone 11) har en pixel en storlek på cirka 0.078 mm. På en display med 460 PPI (iPhone 15 Pro) — 0.055 mm. Ju mindre den fysiska pixelstorleken är, desto högre är skärpan i bilden. Pixeldensiteten påverkar direkt renderingsprestandan: fler pixlar = mer arbete för GPU:n.

Enligt Apple är skärmupplösningen för iPhone 15 Pro 1179 × 2556 px vid en densitet på 460 PPI. Som jämförelse, iPhone SE (3rd gen) — 750 × 1334 px vid 326 PPI. Skillnaden i totalt antal pixlar är nästan 3 gånger, vilket förklarar de högre GPU-kraven på Pro-modellerna.

Skärmupplösning i pixlar

Skärmupplösning — antalet fysiska pixlar horisontellt och vertikalt. Skrivs i formatet bredd × höjd, till exempel 1179 × 2556 px. Upplösning är en grundläggande egenskap hos displayen som inte kan ändras programmatiskt — den är fastställd på hårdvaru- och matrisnivå.

EnhetUpplösning (px)PPIBildförhållande
iPhone SE (3rd gen)750 × 133432616:9
iPhone 141170 × 253246019.5:9
iPhone 15 Pro Max1290 × 279646019.5:9
Samsung Galaxy S24 Ultra1440 × 312050519.5:9
Google Pixel 8 Pro1344 × 299249020:9
iPad Pro 12.9"2048 × 27322644:3

Upplösning i pixlar ska inte förväxlas med logisk skärmstorlek (i pt för iOS eller dp för Android). Till exempel har iPhone 14 en logisk storlek på 390 × 844 pt, men en fysisk upplösning på 1170 × 2532 px — exakt 3 gånger större, eftersom skalfaktorn är 3.

PPI och pixeldensitet

PPI (pixels per inch) — antalet pixlar per tum display. Beräknas med formeln: PPI = √(bredd² + höjd²) / diagonal. Ju högre PPI, desto finare är de enskilda pixlarna och desto jämnare ser bilden ut. Apple anser en display med PPI över 300 på typiskt visningsavstånd som Retina-display.

Olika enhetskategorier har olika densitet: Apple Watch — 326 PPI, iPhone — 326–460 PPI, iPad — 264 PPI, MacBook Pro — 254–264 PPI. Android-enheter klassificerar densitet via Density Buckets: mdpi (160 dpi), hdpi (240), xhdpi (320), xxhdpi (480), xxxhdpi (640). Dessa hinkar avgör vilken resurs (bild, dimens) som laddas för enheten.

PPI:s påverkan på utveckling: ju högre densitet, desto mer minne krävs för att lagra texturer och bilder. En pixel på en display med 500 PPI kräver 2.5 gånger mer GPU-minne än på en display med 320 PPI vid samma logiska elementstorlek. Optimering av tillgångar för specifika densitetshinkar är standardpraxis inom Android-utveckling.

px vs logiska enheter: pt, dp, sp

Fysiska pixlar (px) skiljer sig från logiska enheter (pt, dp, sp) genom att de är bundna till hårdvaruupplösningen och inte skalas. Logiska enheter abstraherar däremot utvecklaren från den specifika displayen, vilket gör att samma värde på 100 pt kan visas med samma fysiska storlek på olika enheter.

EnhetPlattformBeror på PPISkalasFör vad
pxAllaJa (fysisk pixel)NejBilder, buffertar, Metal
ptiOS/macOSNej (logisk punkt)scale factorLayout, UIKit, SwiftUI
dpAndroidNej (densitetsoberoende)density bucketLayout, elementstorlekar
spAndroidNej (skaloberoende)density + font scaleText (textSize)

Omvandlingsformler: för iOS — px = pt × scale (där scale = 1, 2 eller 3). För Android — px = dp × (dpi / 160). Direkt användning av px i kod innebär att gränssnittet kommer att se olika ut på enheter med olika densitet: på en skärm med hög PPI blir elementet för litet, och på låg PPI — för stort.

Varför px inte används i kod

Att använda px i källkoden för en mobilapplikation — ett antimönster som leder till felaktig visning av gränssnittet på enheter med olika pixeldensitet. Moderna ramverk (UIKit, SwiftUI, Jetpack Compose, XML Layouts) förbjuder eller rekommenderar inte att ange mått i pixlar.

  • iOS UIKit — alla frame, bounds och constraint constants anges i pt. Pixlar visas först i rasteriseringsfasen via UIGraphicsImageRenderer
  • SwiftUI — det finns inget API för att ange mått i px. Alla värden är pt via Font, frame, padding
  • Android XML — om du anger px i dimens.xml visar Android Studio en lint-varning: "Use \`sp\` instead of \`px\` for text sizes"
  • Jetpack Compose — TextUnit för text, Dp för element. Kompilatorn tillåter inte blandning av typer

Den enda legitima användningen av px i kod — arbete med rasterbuffertar: ladda Bitmap, skapa Canvas för rendering av bilder, arbete med Metal eller OpenGL. I dessa fall är px fysiska pixlar för målbufferten och måste beaktas för korrekt rendering. I alla andra fall används logiska enheter.

Pixlar i bilder och tillgångar

Bilder och ikoner lagras i pixlar, men för varje skärmtyp levereras olika versioner. iOS använder suffixen @1x, @2x, @3x i Assets.xcassets. Android använder mapparna drawable-mdpi (1×), drawable-hdpi (1.5×), drawable-xhdpi (2×), drawable-xxhdpi (3×), drawable-xxxhdpi (4×). Systemet väljer automatiskt rätt fil baserat på skärmdensiteten.

iOS-skalaAndroid-hinkFaktorExempel (48 pt/dp)
@1xmdpi (160 dpi)48 × 48 px
@2xxhdpi (320 dpi)96 × 96 px
@3xxxhdpi (480 dpi)144 × 144 px
xxxhdpi (640 dpi)192 × 192 px

Regel för leverans av tillgångar: skapa bilden i vektorformat (PDF, SVG) och exportera till rasterskopior av önskade storlekar. Vektortillgångar skalas utan kvalitetsförlust och tar mindre plats i arkivet. I Android kan vektorresurser användas direkt via VectorDrawable, vilket eliminerar behovet av flera rasterskopior.

Vanliga frågor

Vad är skillnaden mellan px och dp?

px — fysisk pixel på skärmen. dp (density-independent pixel) — logisk enhet i Android, lika med 1 px på en skärm med densiteten 160 dpi. Vid olika densiteter konverteras dp automatiskt till ett annat antal px, vilket bevarar elementets fysiska storlek.

Varför kan man inte ange mått i px i kod?

För att px inte tar hänsyn till skärmdensiteten. Ett element på 100 px kommer att se olika ut på enheter med olika PPI: på en skärm med 326 PPI blir det större än på 460 PPI. Logiska enheter (dp, pt, sp) löser detta problem automatiskt.

Vad är PPI och hur beräknas det?

PPI (pixels per inch) — antalet pixlar per tum display. Beräknas med formeln: PPI = √(w² + h²) / d, där w och h är upplösning i px, d är diagonal i tum. Ju högre PPI, desto skarpare bild. Apple Retina-display börjar från 300 PPI.

När är användning av px motiverad?

px är motiverat vid arbete med rasterbuffertar: skapa Bitmap, rendera i Canvas, programmera Metal/OpenGL-shaders, bearbeta kamerabilder. I layout och typografi används inte px — pt (iOS), dp och sp (Android) tillämpas.

Hur tar man reda på skärmupplösningen i px?

I iOS: UIScreen.main.nativeBounds returnerar storleken i px. I Android: DisplayMetrics.widthPixels och heightPixels från context.resources.displayMetrics. I SwiftUI: GeometryReader returnerar storleken i pt, för px måste man multiplicera med displayScale.

Sammanfattning

  • px — fysisk pixel på displayen, grundläggande enhet för skärmupplösning
  • Upplösning — antal pixlar i bredd och höjd, fastställd på hårdvarunivå
  • PPI — pixeldensitet per tum, bestämmer bildskärpa och GPU-krav
  • Logiska enheter (pt, dp, sp) abstraherar px och anpassar gränssnittet till alla skärmar
  • Antimönster — användning av px i layout och typografi; korrekt område — rasterbuffertar
  • Tillgångar levereras i olika upplösningar (@1x/@2x/@3x för iOS, density buckets för Android)
  • Vektorformat (PDF, SVG, VectorDrawable) är att föredra framför flera rasterskopior

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å