Android设备上px(像素)、dpi(像素密度)、dip(密度无关像素)之间的关系

分辨率(Resolution):表示设备屏幕上像素点的总数,相同物理尺寸的手机,分辨率越高显示的图像越清晰

像素密度(dpi):是指每英寸的像素点数量,所以同分辨率的两个设备,它们的dpi很可能不一样;如果一个手机分辨率5寸是1080*1920,而一个平板9.7寸分辨率也是1080*1920,那么 手机的dpi会比平板高出很多。

密度无关像素(dip):也就是我们经常在xml文件中写的长度单位dp,为什么称为密度无关像素呢,这是为了解决不挑分辨率设备显示效果统一的解决方案。试想,如果两个手机屏幕都是一样大小,比如5寸,A手机的分辨率是720*1280,而B手机的分辨率是2080*1920,那么如果我们想在上面显示一个图片分辨率为200*200的图片,就会发现,在A手机上显示的图片比B手机上显示的图片小了很多;直观的来看,A手机的宽度是720,显示200*200的图片差不多要占将近1/3的宽度,而B手机宽度是1080,显示200*200的图片,则只需要占将近1/5不到的宽度,而两个手机的尺寸又都是5寸,所以就会在显示同样分辨率的图片时,产生大小的差异。

所以dip/dp,密度无关像素就应运而生;它是这样规定的,dip与一个dpi(像素密度)为160dpi的设备的px(像素)值是相等的,而对于其他像素密度的设备,则依据转换公式来计算对应的dip值,这个公式是根据dpi(相当于比例),来转换px(像素)和dpi(密度无关像素):

px = dip * (dpi / 160)

dip = px / (dpi / 160)

经过上面的转换之后,由于dip和px的转换是按照比例来的,而这个比例又是dpi/160,而dpi又是根据各个设备的分辨率和尺寸的比例得来的,所以使用相同的dip来设置的尺寸的控件,在相同尺寸大小的设备上,不论设备的分辨率是多少,它们显示的大小都会是一样的。

 

 

你可能感兴趣的:(android)