最近在學習android開發,一直沒有弄清楚px,dp,dip,sp的差別。今天正好有時間,就花時間研究了一下。
衆所周知,android廠商非常多,各種尺寸的android手機、平闆層出不窮。導緻了android生态環境的碎片化現象越來越嚴重。google公司為了解決分辨率過多的問題,在android的開發文檔中定義了px,dp,dip,sp,友善開發者适配不同分辨率的android裝置。
1.基礎知識:
mm:millimeters 毫米,長度機關。
in:inches 英寸,長度機關,螢幕實體尺寸大小的基本機關。
pt:points 一個标準機關,大小為一英寸的螢幕大小的1/72。
dpi: dots per inch 即每英寸的像素點。
舉個例子:
假設qvga(320*240)分辨率的螢幕實體尺寸是(2英寸*1.5英寸),那麼這部手機的dpi=160。
screen size(螢幕尺寸)指的是手機實際的實體尺寸。
如iphone4s是3.5英寸,這裡指的是手機螢幕對角線的長度是3.5英寸。
resolution(分辨率)指手機螢幕橫、豎方向像素個數。
常見的手機分辨率:qvga(240×320像素),hvga(480×320像素),wvga(800×480像素),720p(1280x720像素),1080p(1920x1080像素),2k(2560x1440像素)
2.基本定義:
px (pixel的縮寫,即像素) 是指一個像素。
sp (scale-independent pixels)是指比例獨立像素。
dip (device independent pixels)是指裝置獨立像素。
dp:(density-independent pixel)在android文檔中(http://developer.android.com/guide/practices/screens_support.html#terms),它的計算方法是:px = dp * (dpi / 160)。
看一下dp的機關是什麼:像素 = dp的機關 * 像素/英寸 。可以看出dp的機關是長度機關英寸。1dp的長度 = 1 * dpi / 160 * 1 / dpi 英寸 = 1 / 160 英寸 。
dp的意義是:你可以根據看到的實際大小,在應用中設定對應的dp值,而使得不同的裝置上看起來一樣大。
3.不同之處
px(像素)表示螢幕的真實像素,比如現在流行的1080p手機和2k手機,1080p手機就是1920x1080像素,也就是說這個手機的螢幕橫向有1080個像素,縱向有1920個像素。這個值是絕對的,是多少就是多少,不會改變。
sp(比例獨立像素),也就是說是與密度和字型縮放度無關的像素,主要用于字型的大小。
dip(裝置獨立像素)這個是邏輯像素機關,其實就是dp。
歡迎讨論交流,我的郵箱是[email protected]。
歡迎轉載,轉載請注明網址,謝謝!<b>http://www.cnblogs.com/johntsai/p/3875561.html</b>