全面理解Android中的Px,DPI,DIP,Density,Sp等概念

Px

Pixel,像素。不同設備顯示效果相同,這裏的“相同”是指像素數不會變,比如指定UI長度是100px,那不管分辨率是多少UI長度都是100px。也正是因爲如此才造成了UI在小分辨率設備上被放大而失真,在大分辨率上被縮小。

Screen Size

表示屏幕尺寸。一般所說的手機屏幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的對角線的長度,而不是手機面積。我們可以根據勾股定理獲取手機的寬和長,當然還有面積。

Resolution

表示分辨率。指手機屏幕垂直和水平方向上的像素個數。

比如分辨率480*320指設備垂直方向有480個像素點,水平方向有320個像素點。

DPI

dots per inch,像素密度,即屏幕每英寸所包含的像素數

例如QVGA(320*240)分辨率的屏幕物理尺寸是2英寸*1.5英寸,它的DPI爲160dpi

Density

表示密度,沒有沒單位,就是一個比例值,也可以叫縮放係數,值爲DPI/160。常見取值 1.0 , 1.5 ,2,3。

DIP

Density-independent pixel,與設備無關的像素。Px= DIP * (DPI / 160)

使用DIP可以使不同設備上顯示的物理尺存大致一樣

爲什麼是大致一樣呢?因爲我們平時所說的DPI:120(low)、160(medium)、240(high)、 320(xhigh),只是一個大概值。比如實際設備的DPI可能是243dp,但是根據標準,就被歸爲240dp了,也就是就近取了一個標準值

Sp

Scale-independent Pixels,縮放獨立像素,用於字體顯示。關於Sp, 官方文檔的描述是這樣的:

Scale-independent Pixels – This is like the dp unit, but it is also scaled by the user’s font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user’s preference.

大致的意思是:Sp除了受屏幕密度影響外,還受到用戶的字體大小影響(我們可以進入系統設置中修改字體大小)。通常情況下,建議使用Sp來跟隨用戶字體大小設置。

參考:
1.Android中px dpi dip density densityDpi 的相關說明
2.android中的dp,px深度解析
3.兩分鐘理解Android中SP與DP的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章