屏幕相關(guān)的基礎(chǔ)知識
-
mm
mm(millmeters)毫米,長度單位。 -
in
in(inches)英寸,長度單位,屏幕物理尺寸的基本單位,1英寸 ≈ 2.54厘米; -
pt
pt(points)一個標(biāo)準單位,1pt = 1/72英寸 = 0.035厘米;
屏幕分辨率
屏幕分辨率(Screen Resolution)是指設(shè)備屏幕橫向與縱向的像素點個數(shù),常見的分辨率有:
| 類別 | 分辨率 | 備注 |
|---|---|---|
| QVGA | 240x320 | 已過時 |
| HVGA | 320x480 | 已過時 |
| WVGA | 480x800 | 已過時 |
| 720P | 720x1080 | |
| 1080P | 1080x1920 | |
| 2k | 1440x2560 |
目前市面上絕大部分設(shè)備分辨率集中在720p、1080p、2k,目前1080p、2k在新機型中占據(jù)主流,720p分辨率仍具有一定比例的市場占有量。
基礎(chǔ)概念<px、dp、ppi、dpi、sp>
-
px(pixel)
像素,1px代表物理屏幕上面的一個像素點。由于Android設(shè)備分辨率繁雜、廠商過多的原因,px在實際的開發(fā)過程中不建議被使用。如寬高都為100px的圖片,在不同分辨率的設(shè)備上可能顯示的大小不一致,如下圖(圖片來自android_developer_screens_support):
image.png
官方對于屏幕適配支持不同密度的建議:
您在設(shè)計布局時必須避免的一個常見陷阱是,使用絕對像素來定義距離或尺寸。 使用像素來定義布局尺寸會帶來問題,因為不同的屏幕具有不同的像素密度,因此同樣數(shù)量的像素在不同設(shè)備上可能對應(yīng)于不同的物理尺寸。 因此,在指定尺寸時,請務(wù)必使用 dp 或 sp 單位。dp 是一種密度無關(guān)像素,對應(yīng)于 160 dpi 下像素的物理尺寸。 sp 是相同的基本單位,但它會按用戶首選的文本尺寸進行縮放(屬于縮放無關(guān)像素),因此您在定義文本尺寸時應(yīng)使用此計量單位(但切勿為布局尺寸使用該單位)。
-
dp(又稱dip,Density-independent Pixels)
密度獨立像素——一個基于屏幕物理密度的抽象單元。這些單位相對于160 dpi(每英寸的點)屏幕,1dp大約等于1px。當(dāng)在更高密度的屏幕上運行時,用于繪制1dp的像素的數(shù)量會被一個適合屏幕dpi的因素放大。同樣地,當(dāng)在低密度屏幕上時,1dp的像素數(shù)量也會減少。DP與像素的比值隨屏幕密度而變化,但不一定是正比。使用dp單位(而不是px單位)是一個簡單的解決方案,可以在布局中適當(dāng)?shù)卣{(diào)整大小,以適合不同的屏幕密度。換句話說,它為您在不同設(shè)備上的UI元素的真實大小提供了一致性。 -
ppi
ppi(pixels per inch)像素密度,是一個表示打印圖像或顯示器單位面積上像素數(shù)量的指數(shù)。一般用來計量電腦顯示器,電視機和手持電子設(shè)備屏幕的精細程度。通常情況下,ppi越高,表示屏幕的像素密度越高,這樣屏幕內(nèi)容看起來就更加細膩,看起來也就更加真實。
ppi的計算公式為:
image
以分辨率1280*720、屏幕對角線尺寸為4.3英寸的設(shè)備為例:
ppi = √(12802+7202) / 4.3 = 341.5359……≈342 -
dpi
dpi(dots per inch)屏幕密度,是一個量度單位,用于點陣數(shù)位影像,意思是指每一英寸長度中,取樣或可顯示或輸出點的數(shù)目。例如, 與“正?!被颉案摺泵芏绕聊幌啾?,“低”密度屏幕在給定物理區(qū)域的像素較少。
為簡便起見,Android 將所有屏幕密度分組為六種通用密度,具體如下表:
| 類別 | dpi | density |
|---|---|---|
| ldpi(低) | ~120dpi | 0.75 |
| mdpi(中) | ~160dpi | 1.0 |
| hdpi(高) | ~240dpi | 1.5 |
| xhdpi(超高) | ~320dpi | 2.0 |
| xxhdpi(超超高) | ~480dpi | 3.0 |
| xxxhdpi(超超超高) | ~640dpi | 4.0 |
-
ppi與dpi的區(qū)別
dpi(dots per inch)、ppi(pixels per inch),前者突出dot(物理像素點),后者突出pixel(像素),dot是一個物理的像素點,pixel就不一定了,一個pixel可能由很多個物理dot組成。
對Android而言,dpi等同于ppi,具體可以參考PPI vs. DPI: what’s the difference?
-
sp(Scale-independent Pixel)
與縮放無關(guān)的抽象像素。sp和dp很類似但唯一的區(qū)別是,Android系統(tǒng)允許用戶自定義文字尺寸大?。ㄐ ⒄?、大、超大等等),當(dāng)文字尺寸是“正?!睍r,1sp = 1dp,而當(dāng)文字尺寸是“大”或“超大”時,1sp > 1dp。
參考文章
Android_dev_screens_support
Android開發(fā)中dp、dpi、px的區(qū)別(轉(zhuǎn))
dp的定義原理和dpi,ppi,px,pt,sp之間的區(qū)別
Android開發(fā)中dpi和ppi的理解
Android 中 px、dp、dip、sp詳解
Android中px, ppi, dpi, dp, dip, sp概念解析
如果您有更好的建議歡迎評論分享,如有錯誤,請批評指正,謝謝。
