Android开发-px和dip以及sp的区别


本文整理自网络,侵删。

 看到有很多网友不太理解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",两列之间的边距。

相关阅读 >>

Delphi 二进制转换为文本

Delphi fdconnection1 获取数据库总记录数

Delphi canvas.lineto 画线

Delphi 如何在toolbar中的toolbutton上显示文字

Delphi 动态修改显示器分辨率

Delphi xe 利用fmx控件的makescreenshot过程实现wait效果

Delphi messagebox 使用

Delphi rgb 画出三角形

Delphi 密码框写完后按enter直接登录

Delphi发送邮件―中文显示为乱码解决

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...