美文网首页
Android px,sp,dp,sp 之间的关系

Android px,sp,dp,sp 之间的关系

作者: keyboy | 来源:发表于2017-09-22 17:31 被阅读0次

    先来说说基本的概念吧:

    手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm)
    手机的分辨率:屏幕能显示的像素的数量, 一般用在长方向上数量宽方向上数量来表达,即经常说的19201080
    手机的像素密度ppi(pixels per inch):即每英寸屏幕能显示的像素数,像素密度越大,显示画面细节就越丰富。计算:像素密度={1+√[(长度像素数-1)2+(宽度像素数-1)2]}/屏幕尺寸
    dpi(Dots Per Inch)的缩写:用来表示打印机打印分辨率, 但有时也会用dpi来代指ppi
    手机的密度 Density:以160dpi为基准,手机的像素密度与基准的比值。 即像素密度为160时Density为1
    手机的密度: Density, 以160dpi为基准,手机的像素密度与基准的比值。 即像素密度为160时Density为1

    px: pixel 像素,屏幕中可显示的最小单元。
    pt: point 磅数 1磅等于 1/72英寸 ,一般pt都会作为字体的单位来使用(印刷行业使用)
    dpi: density per inch 每英寸像素密度
    dp: 也称作 dip density independent pixel 密度无关像素,它在不同像素密度的屏幕中的显示比例保持一致
    sp: scaled pixels 是可伸缩像素的意思
    dp,sp是可以根据手机的不同进行适配的

    常用dpi标识(字母) 常用dpi标识(数字) 手机密度(density)                    
     ldpi                   120dpi             0.75
     mdpi                   160dpi             1.0
     hdpi                   240dpi             1.5
     xhdpi                  320dpi             2.0
    

    计算方式:

    定义:1dp = (dpi / 160) px
    也就是1px = 1/density dp
    即:1dp = density px

    160dpi:1dp = 1px
    120dpi:1dp = 0.75px
    320dpi:1dp = 2px
    dp值转换为px值得方法为:
    假设手机密度 :density = x,dp的值为y
    由1dp = density px
    可知ydp = yx px
    所以结果为yx

    px值转换为dp值得方法为:
    假设手机密度 :density = x,px的值为y
    由1px = 1/density dp
    可知 ypx = y/x dp
    所以结果为y/x

    获取屏幕尺寸

    double y = Math.pow(outMetrics.heightPixels / outMetrics.ydpi, 2);
    double screenInches = Math.sqrt(x + y); //屏幕尺寸(英寸)
    System.out.println("width : " + screenInches);
    

    总结:

    在Android中文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。例如textSize="16sp"、layout_width="60dp"

    相关文章

      网友评论

          本文标题:Android px,sp,dp,sp 之间的关系

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