Android平台显示单位px和dip以及sp的区别

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

看到有很多网友不太理解dp、sp和px的区别:现在这里介绍一下dp和sp。dp也就是dip。这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。

在Android的layout文件中layout_width或layout_height有时候可能会指定具体的单位,比如有时候为px、dip或者sp等等。下面android123把常见的单位做下简单的介绍,比如说

px (pixels)像素 -- 一般我们HVGA代表320x480像素,这个用的比较多。

dip或dp (device independent pixels)设备独立像素 -- 这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA cwj推荐使用这个,不依赖像素。

sp (scaled pixels — best for text size)放大像素-- 主要处理字体的大小。

  界面长度,android 建议使用dp
dp 是一个抽象单位,android 把屏幕宽度统一设定为320dp。这样只要是长度单位用dp时,相对于屏幕的比例是一致的
dp 和px 的转化关系
屏幕实际分辨率为240px*400px时,density=120
屏幕实际分辨率为320px*480px,density=160
屏幕实际分辨率为480px*800px,density=240

转化公式:Px = dips * (density / 160)

如: 320*480 时,1px=1dp



下面的几个是不常用的,大家也知道这里不再过多的赘述。

in (inches)英寸

mm (millimeters)毫米 

pt (points)点



android:numColumns="auto_fit" ,GridView的列数设置为自动
android:columnWidth="90dp",每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth",缩放与列宽大小同步
android:verticalSpacing="10dp",两行之间的边距,如:行一(NO.0~NO.2)与行二(NO.3~NO.5)间距为10dp
android:horizontalSpacing="10dp",两列之间的边距。

 

你可能感兴趣的:(android)