px(pixels)——像素:不同的裝置顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。
dip(device independent pixels)——裝置獨立像素:這個和裝置硬體有關,一般哦我們為了支援WCGA、HVGA和QVGA推薦使用這個,不依賴於像素。等同於dp。
sp(scaled pixels—best for text size)——帶比例的像素。
pt(points)——磅:1pt = 1/72英寸
in(inches)——英寸
mm(millimeters)——毫米
到底px和dip有什麼區別呢?
dip != px
主要是針對不同裝置而言的
在Density是160的裝置上,比如用AVDManager建立的預設模擬器,dip和px是一樣的
但是如果同樣的代碼,換到不同Density的裝置上,比如換到一個Density是240的裝置上,dip和px體現出來的大小就不一樣了
px不管在什麼樣的裝置上都是那樣長,但是dip會根據裝置變化
WQVGA屏density=120;QVGA屏density=120;HVGA屏density=160;WVGA屏density=240;
density值表示每英寸有多少個顯示點,與解析度是兩個概念。
當螢幕density=240時使用hdpi標籤的資源
當螢幕density=160時,使用mdpi標籤的資源
當螢幕density=120時,使用ldpi標籤的資源。
不加任何標籤的資源是各種解析度情況下共用的。
布局時盡量使用單位dip,少使用px
換算公式為 pixs = dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
如何獲得裝置的螢幕解析度和螢幕密度:
如解析度為480*800,密度為240的裝置
DisplayMetrics dm =getResources().getDisplayMetrics();
dm.densityDpi=240
dm.widthPixels=480
dm.heightPixels=800