首先把两个东西说清楚,防止大家眼花导致理解错误
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
在默认情况
LDPIdpi为120,density为0.75,
MDPIdpi为160,density为1.0;
HDPIdpi为240,density为1.5;
XHDPIdpi为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失去了它的意义,但是也很合理








网友评论