dp、sp以及屏幕相关的一些概念

Q:

dp是什么,sp呢,有什么区别?例如一个控件宽度为 15dp 或者 15sp 在大部分情况下是一样的,那什么情况下不同?

A:
dp/dip: Density-independent pixels(密度无关像素),是长度单位。
    1dp = (ppi / 160) * 1 px。其中,ppi为手机的像素密度,px为像素。
sp:scaled pixels(可缩放像素),是字体单位。
dp、sp都受屏幕密度影响,sp还受到用户的字体大小影响,会随着系统的字体大小改变。而dp作为单位则不会。
若改变手机的字体大小,二者宽度会不同。
 

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~ ~ ~ ~ ~ ~ ~ ~ 

1) 手机的尺寸 : 屏幕对角线的长度,单位为英寸(2.54cm)

2) 手机的分辨率 : 屏幕能显示的像素的数量, 一般用在长方向上数量*宽方向上数量来表达,如1920*1080

3) px: pixels(像素),是指基本原色素及其灰度的基本编码。1px的长度就对应屏幕一个像素点的大小。
不同的手机一个像素的大小不同,同尺寸的屏幕A、B,若A可显示100个像素,B可显示200个像素,则A中一个像素的宽度是B的2倍。

4) ppi:pixels per inch(手机的像素密度),即每英寸屏幕能显示的像素数,像素密度越大,显示画面细节就越丰富,屏幕越清晰。
        像素密度ppi={√[(长度像素数)^2+(宽度像素数)^2]}/屏幕尺寸

5) dpi:Dots Per Inch(每英寸所打印的点数),当设备的dpi为160的时候1px=1dp。 但有时也会用dpi来代指ppi

6) Density:手机的密度,以160ppi为基准, 即像素密度(ppi)为160时Density为1 :   1 Density = 160ppi = 160dpi

ldpi     120ppi(dpi)    0.75 Density
mdpi    160ppi(dpi)    1.0
hdpi    240ppi(dpi)    1.5
xhdpi    320ppi(dpi)    2.0

7) dp/dip: Density-independent pixels(密度无关像素),是长度单位。(1dp表示在屏幕像素点密度为160ppi时1px长度)
            标准是160dip.即1dp对应1个pixel,,屏幕密度越大,1dp对应 的像素点越多。

8) dp和px的关系://dp最终要转换成像素px的

1dp = (ppi / 160) * 1 px
1dp = density * 1 px
//QVGA屏,像素密度ppi(dpi)为120,即每英寸屏幕能显示120个像素,手机密度Density为0.75,即1dp = 0.75px
//HGVA屏,像素密度ppi(dpi)为160,即每英寸屏幕能显示160个像素,手机密度Density为1,   即1dp = 1px
//WGA屏, 像素密度ppi(dpi)为240,即每英寸屏幕能显示240个像素,手机密度Density为1.5, 即1dp = 1.5px
//以dp为单位,最终转换的像素数是可以变化的。

当A、B两个宽度分别为100dp、100px:
在QVGA屏幕中,100dp = 75px,即A有75个像素,B有100个像素,故B比A宽。
在HGVA屏幕中,100dp = 100px,即A、B各有100个像素,A、B一样宽
在WGA屏幕中,100dp = 150px,即A有150个像素,B有100个像素,A比B宽    

注意: Android在运行时会自动将dp/dip/sp为单位的尺寸转换为像素单位的值
 

参考:https://www.jianshu.com/p/474e55f684dd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值