• px 与 dp, sp换算公式?


    PPI = Pixels per inch,每英寸上的像素数,即 "像素密度"

    • xhdpi: 2.0
    • hdpi: 1.5
    • mdpi: 1.0 (baseline)
    • ldpi: 0.75

    drawable-ldpi、drawable-mdpi、drawable-hdpi 精度分别为低、中(android默认)、高。
    对应的图片大小为:36x36、48x48、72x72。

    xxhdpi: 144*144
    xhdpi:96*96
    hdpi:72*72
    mdpi:48*48
    ldpi:36*36

    dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如:
    在320x480分辨率,像素密度为160,1dp=1px
    在480x800分辨率,像素密度为240,1dp=1.5px
    计算公式:1dp*像素密度/160 = 实际像素数

    drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
    (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
    (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
    (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
    系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。


     ppi的运算方式是:

    PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数

    dp:Density-independent pixels,以160PPI屏幕为标准,则1dp=1px,

    dp和px的换算公式 :
    dp*ppi/160 = px。比如1dp x 320ppi/160 = 2px。

    sp:Scale-independent pixels,它是安卓的字体单位,以160PPI屏幕为标准,当字体大小为 100%时, 1sp=1px。

    sp 与 px 的换算公式:sp*ppi/160 = px

    总结得出:

    px = dp*ppi/160
    dp = px / (ppi / 160)

    px = sp*ppi/160
    sp = px / (ppi / 160)

    dp = sp? 

    参考:

    [无线手册-4] dp、sp、px傻傻分不清楚[完整] 
    http://zhuanlan.zhihu.com/zhezhexiong/19565895

    Supporting Different Screens | Android Developers
    http://developer.android.com/training/basics/supporting-devices/screens.html#create-bitmaps

    Iconography | Android Developers
    http://developer.android.com/design/style/iconography.html

    Devices and Displays | Android Developers
    http://developer.android.com/design/style/devices-displays.html

  • 相关阅读:
    uoj310. 【UNR #2】黎明前的巧克力
    ZJOI2015 幻想乡战略游戏
    bzoj4407 于神之怒加强版
    bzoj3309 DZY Loves Math
    CF613D Kingdom and its Cities
    bzoj3677 [Apio2014]连珠线
    CF961G Partitions
    loj6077. 「2017 山东一轮集训 Day7」逆序对
    bzoj4596 [Shoi2016]黑暗前的幻想乡
    CF786B/CF787D Legacy
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3640786.html
Copyright © 2020-2023  润新知