android 字体 基准单位,Android之dp,px计量单位

1.dp,dpi,px,sp计量单位区别

答:px:屏幕的像素点,也成像素。依赖于物理设备

sp:用于设置字体大小

dpi:像素密度,一英寸包含的像素数。常见120,240,360。分辨率纵横方向上的总像素数,比如:480X800。

即 drawable-ldpi: 屏幕密度为120的手机设备

drawable-mdpi: 屏幕密度为160的手机设备

drawable-hdpi: 屏幕密度为240的手机设备

drawable-xhdpi: 屏幕密度为320的手机设备

drawable-xxhdpi:屏幕密度为480的手机设备

dp:设备无关像素。

这里说的不依赖于设备,是图片的大小相对于不同设备屏幕大小的比例是一样的。如果一个图片100px宽,在尺寸不同的设备上大小是不同的。为了使得dp不依赖设备,这里就要用到dpi。dpi的大小其实是约定好的,只会有120/160/240/320/480这几种,我们选其中一种作为基准来定义dp:

在屏幕密度为160dpi的情况下, 1dp = 1px。 mdpi

有了这个基准,其他设备就能很快换算出它的展示大小。比如240dpi的设备,1dp = 1.5px。

通过dpi和一个基准的定义,我们就使得dp对与开发者来说是不依赖于设备的了.

2.dp与px转换

答:dp和px之间的联系取决于具体设备上的像素密度。像素密度就是DisplayMetrics里的density参数。当density=1.0时表示 1dp=1px。density=1.5时,1dp=1.5px。具体的转换函数如下:

//根据手机分辨率从dp的单位转换成px

public static int dip2px(Context context,float dpValue){

//获取当前手机的像素密度

final float scale = context.getResources().getDisplayMetrics().density;

return(int)(dpValue*scale + 0.5f);//四舍五入取整

}

//根据手机分辨率从px的单位转换成dp

public static int px2dip(Context context,float pxValue){

//获取当前手机的像素密度

final float scale = context.getResources().getDisplayMetrics().density;

return(int)(pxValue/scale + 0.5f);//四舍五入取整

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值