android 图片文字尺寸(dp和sp)

在突然起来的互联网时代,PX和PT的配合变得不和谐,原因就是android碎片化过于严重。

密度density指的是在一定尺寸的物理屏幕上显示像素的数量,一般使用dpi作为单位。比如一台分辨率为240X320,屏幕物理尺寸为1.5英寸的手机,他的密度可以用分辨率/尺寸,240/1.5或者320/2,密度为160dpi。对于用户来说,密度越大的屏幕显示效果越精细,因为每英寸显示的像素数量更多。

如果要使用px和pt给程序贴图,假设生成了一条240px的直线,在240*320的屏幕上刚好可以铺满,而放到480*800的分辨率下才刚刚到一半的位置。如果要解决这样的问题,那么程序在实现的时候就必须为每个分辨率都写一个配置,否则就会出现图形在低密度的屏幕上显示的更大,而在高密度的屏幕上显示的更小。更严重的是一旦出现新的分辨率,所有程序都没办法直接运行了。

dp和sp

为了解决这个问题,android引入了一套新的单位dp和sp。

dp,Density Independent Pixel,可以翻译为密度无关像素。和px相比,dp在不同密度的屏幕中实际显示比例将保持一致。根据规定,一个dp相当于160dpi屏幕中的一个px,在320dpi的屏幕中,一个dp相当于2个px。通过这样的比例放缩,就可以解决了不同屏幕中的大小显示问题。

px

即像素,1px代表屏幕上一个物理的像素点;px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小不可能不同,如下图所示:

       

偶尔用到px的情况,是需要画1像素表格线或阴影线的时候,用其他单位如dp会显得模糊。

dp

不同的手机可能具有不同的像素密度,例如同为4寸手机,有480*320分辨率的也有800*480分辨率的,前者像素密度就比较低。Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp和px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。例如界面上有个长度“80dp”的图片,那么它在240dpi的手机上实现显示为80*1.5=120px,在320dpi的手机上实际显示为80*2=160px。如果拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不多”,这就是使用dp作为单位的效果,见下图:


是不是所有Android手机的屏幕宽度用dp衡量都是固定值(例如320dp)呢?答案是否定的,如果写入一个程序画宽度等于320dp的横线,在不同手机上运行,会发现在有些手机上横线比手机屏幕短,有些则比较长。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值