Android px、dp 和 sp 浅谈

2015年09月16日:


摘抄自:http://blog.itpub.net/18760228/viewspace-751929/


一,px

px即像素,1px=1像素


二、dp

程序员最常用也是最难懂得一个尺寸单位;

首先给出 dp 的换算公式:

px = dp*(像素密度/160);


然后解释下其中唯一剩余的神秘变量:像素密度:

假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸屏幕的分辨率为240x320 那么每英寸的像素点数是

240(横向的总像素个数)/1.5(英尺) =160(像素密度),或者是:320(横向的总像素个数)/2(英尺) =160(像素密度) 

所以这部手机的像素密度就是:每英寸有160个像素,也就是160dpi(dpi:像素密度的单位,Dots Per Inch的缩写

同一部手机的的像素密度,在横向和纵向上是相同的,原因是手机屏幕都是用得正方形的像素点 


不同的手机是有不同的像素密度的,比如:4寸的手机有 480x320分辨率的也有800x480的,那么前者的像素密度就比较低。然而 Android系统定义了四种像素密度:低(120dpi),中(160dpi),高(240dpi),超高(320dpi),超超高(480dpi),那么换算到上面的公式对应的就是:

低(ldpi):px = dp*(120/160);   dp = px/0.75;

中(mdpi):px = dp*(160/160); dp = px/1;

高(hdpi):px = dp*(240/160); dp = px/1.5;

超高(xhdpi):px = dp*(320/160); dp = px/2;

超超高(xxhdpi): px = dp*(320/160); dp = px/2;

三,sp:

sp和dp几乎相似;唯一的区别在于,Android系统是允许用户改变文字尺寸大小的(小、正常、大等等),一般情况下文字尺寸默认都是正常的,那么1sp = 1dp ,而当文字尺寸是“大”,或者“小”的时候 1sp才不跟1dp不一样



能看懂的就看,非程序员看不懂的我根据截图来说明下:


案例1:手机型号:百度100;分辨率:1280x720:




图上显示:绿色的我设置的是160dp;蓝色的为240px;而这部手机的像素密度是2.0,

也就是xhdpi的手机(这个值是我运行项目的到的,所以他是准确的)


根据下面显示的公式得出 160dp = 320px;所以绿色的要更宽一些;那么下面我在上传几个其他分辨率的手机

然而就不一一赘述了,我会把手机的型号告诉大家,大家看看就可以了


案例二:手机型号:SM MT25i ;分辨率:854x480




案例三:手机型号:努比亚 NX507J;分辨率:1920x1080






案例四:手机型号:SE WT18i ;手机分辨率: 480x320





案例五:手机型号:sony xm50h;手机分辨率:1280x720







在这里说一下,手机分辨率跟px转换dp没有什么必然的联系,而是跟手机屏幕尺寸跟手机分辨率之间有关系





这个文章是我匆忙之间做出来的,估计会有些缺陷,以后有时间我会来更新的,同时希望路过的大牛指点纠正












  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值