美文网首页
dp、sp及区别

dp、sp及区别

作者: 鹿小纯0831 | 来源:发表于2019-03-20 14:32 被阅读0次
  • px : 其实就是像素单位,比如我们通常说的手机分辨列表800*400都是px的单位 。
  • dp : 虚拟像素,在不同的像素密度的设备上会自动适配。
  • sp : 同dp相似,还会根据用户的字体大小偏好来缩放 。

一、dp

dp也叫dip,是device independent pixels。设备不依赖像素的一个单位。在不同的像素密度的设备上会自动适配,比如:
在320x480分辨率,像素密度为160,1dp=1px ;
在480x800分辨率,像素密度为240,1dp=1.5px ;
计算公式:px = dp * (dpi/160)

使用dp作为单位的,会根据不同的设备进行转化,适配不同机型。所以建议在长度宽度的数值使用dp作为单位。

dp与px值转换的工具类:
public class DensityUtil {

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dp2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dp(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }
}

二、sp

sp作为字体大小单位,会随着系统的字体大小改变,而dp作为单位则不会。所以建议在字体大小的数值要使用sp作为单位

相关文章

网友评论

      本文标题:dp、sp及区别

      本文链接:https://www.haomeiwen.com/subject/ixizmqtx.html