在android开发中,dp/dip和px这两个单位有什么关系和区别。
首先在Android开发中,不建议使用px,而应该使用dp/sp。Google官方对这两个单位的定义:
px
像素,对应于屏幕上的实际像素数。dp/dip
density-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是在原始像素的基础上转换后得到的。
内容