https://blog.csdn.net/guolin_blog/article/details/50727753
https://blog.csdn.net/zhaokaiqiang1992/article/details/49787117
基本概念:
1. px: 分辨率單位像素
平常所說的1920×1080只是像素數量,也就是1920px × 1080px,代表手機高度上有1920個像素點,寬度上有1080個像素點。
2. dpi: 像素密度單位,表示1英寸上有多少個像素 px/inc
160dpi表示1英寸上有160個像素 160dpi = 160px/inc
240dpi表示1英寸上有240個像素 240dpi = 240px/inc
設備dpi越高,即1英寸含有的像素點越多,顯示效果越好
2.dp:在定義 UI 佈局時應使用的虛擬像素單位,用於以密度無關方式表示佈局維度 或位置
在android api中
1.densityDpi:這個對應dpi(像素密度單位) 單位: px /inc
2.density:顯示的邏輯密度,這是密度獨立像素單位 ,表示1個虛擬像素對應多少個屏幕像素px
即1dp 對應 幾個px --------- 單位: px /dp
3.虛擬像素單位: 官方規定 1英寸有160個虛擬像素 160dp/inc
下面推導px和dp之間的關係
假設 像素密度densityDpi = 240(1英寸含有240個像素, 即240px/inc ),
因爲官方規定 1英寸有160個虛擬像素 ( 160dp/inc ),
所以1英寸中,160dp對應240px(即 1dp = 1.5px),即 density = 240px/160dp = 1.5 px /dp
所以 density = densityDpi / 160 px/dp --- 1dp 對應 density個屏幕像素px
所以 1dp = density 個 px
3dp = 3 * density 個px
a個dp = a* density 個px = a * densityDpi / 160 個px --------這就是dp 和px 之間的關係
--------------------------------------------------------------------
當 densityDpi = 160
1英寸中,160dp對應160px(即 1dp = 1px),即dp 和px等價
將分辨率轉換成虛擬像素表示
1. dip = 160 , 320 x 480 px 轉換成dp 表示
首先計算出 density = 160 / 160 px/dp , 1dp 對應1個px
設 320px 對應 a 個dp , 所以 a = 320 /dendity = 320 dp
同理得高 480dp
所以 在dip = 160, 320 x 480 px 轉換成dp 表示 320dp x 480dp
1. dip = 240 , 320 x 480 px 轉換成dp 表示
首先計算出 density = 240 / 160 px/dp , 1dp 對應1.5個px
設 320px 對應 a 個dp , 所以 a = 320 /dendity = 233dp
同理得高 320dp
所以 在dip = 240, 320 x 480 px 轉換成dp 表示 233dp x 320dp