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没有什么必然的联系,而是跟手机屏幕尺寸跟手机分辨率之间有关系
这个文章是我匆忙之间做出来的,估计会有些缺陷,以后有时间我会来更新的,同时希望路过的大牛指点纠正