首先把两个东西说清楚,防止大家眼花导致理解错误
dp
也就是dip
:device independent pixel
设备独立像素
dpi
: dots per inch
即像素密度,每英寸屏幕的像素点
px
:这个很基础,就是像素,一个点就是一个像素。
dp
:这个单位是为了保证在同样的显示器上物理长度一致。
一般来说,屏幕的尺寸我们会说多少寸17寸 ,5.3寸,这多少寸指的是屏幕对角线长度,根据勾股定理,算得的对角线长度大多不是整数,所以我们19寸通常给的都是一个近视值。
例如我的一个
19英寸
1440*900
的屏幕
他的dpi
计算方式如下:
math.sqrt(1440*1440-900*900)/19 ==59.2 //约等于60
1440/60=24 //屏幕宽为24英寸
900/60=15 //屏幕高为15英寸
说明这个屏幕长度为
24
寸,宽为15
寸
这块屏幕的dpi
是60
在安卓里面,对dpi
的划分
ldpi
:000~120dpi
mdpi
:120~160dpi
hdpi
:160~240dpi
xhdpi
:240~320dpi
xxhdpi
:320~480dpi
xxxhdpi
:480~640dpi
在默认情况
LDPI
dpi
为120
,density
为0.75
,
MDPI
dpi
为160
,density
为1.0
;
HDPI
dpi
为240
,density
为1.5
;
XHDPI
dpi
为320
,density
为2.0
;
...
density
就是DPI/160
是该屏幕的dpi
和160标准屏幕dpi
的比例
dp =density * px;
所以19寸1440*900
这款屏幕的dpi
是60
密度是0.375
屏幕宽度1440*0.375=540
为540
个dp
屏幕高度900*0.375=337.5
为337.5
个dpi
就是这个density
让同样的dp单位在不同物理尺寸的手机上保持一致,density
是个比例,其实dp
也是一个比例,这样就很好理解了。
抱着疑问,我对我的安卓板测试了一下
结果很神奇,我的安卓版vga外接显示器的结果density=1 dpi=160
,仔细想想,
安卓外接显示器,其实它不知道显示器的大小,仅能选取分辨率,所以这样做dp
失去了它的意义,但是也很合理
网友评论