dp/dip和px的区别是什么?

在android开发中,dp/dip和px这两个单位有什么关系和区别。

androiddppxdip
3
407
小课
小课2022-05-05 13:38
1 个回答

首先在Android开发中,不建议使用px,而应该使用dp/sp。Google官方对这两个单位的定义:

  • px像素,对应于屏幕上的实际像素数。
  • dp/dipdensity-independent pixels,密度无关像素,是基于屏幕物理密度的抽象单位。

在介绍他们的区别之前,先看看使用px作为单位会遇到的问题,假设有三个设备,它们的大小一样,长是4英尺,宽是3英尺,但是它们屏幕的分辨率不同,如果定义一个正方形是2px*2px,那么它在这几个设备上的表现如下:

很明显看起来大小差别很大,但是Android的机型非常多,分辨率跨度很大,如果使用像素作为单位,非常不利于适配,于是就出现了dp这个单位。

要说dp和px的联系,就需要先引入dpi(dots per inch),单位英寸的所包含点数,它是一个像素密度的计量单位,比如说上面第一个设备,长4英寸,包含4个像素点,宽3英寸,包含3个像素点,所以它像素密度是1dpi,其它两个分别是2dpi和3dpi。在Android中,160dpi是一个基准密度,在160dpi的设备上,1px等于1dp,在320dpi的设备上,2px等于1dp,它们之间的换算公式如下。

px = dp * (dpi / 160)

当使用dp作为单位时,在同样大小,但是不同分辨率的屏幕下时,1dp*1dp的正方形,表现如下。

简单理解就是,在px是原始像素的单位,而dp则是根据dpi是在原始像素的基础上转换后得到的。

3
小课
小课2022-05-05 19:53
你的回答

内容