• dp和px以及sp


    dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

    sp: scaled pixels(与刻度无关的像素). 主要用于字体显示best for textsize。
    dp也就是dip,这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。

    但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一 样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度 设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动 将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。
    px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
    pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;

    下面来看一下手机屏幕类型和密度以及分辨率的对应关系

    QVGA屏density=120 QVGA(240*320)
    HVGA屏density=160 HVGA(320*480)
    WVGA屏density=240 WVGA(480*800)
    WQVGA屏density=120 WQVGA(240*400)

    注:density值表示每英寸有多少个显示点,与分辨率是两个概念。

    不同density下屏幕分辨率信息是不同的,以480dip*800dip的 WVGA(density=240)为例

    1、当density=120时

    转化:转化系数=120/240

    屏幕实际分辨率为240px*400px (两个点对应一个分辨率)

    状态栏和标题栏高各19px或者25dip

    横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip

    竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip

    2、当density=160时

    转化:转化系数=160/240

    屏幕实际分辨率为320px*533px (3个点对应两个分辨率)

    状态栏和标题栏高个25px或者25dip

    横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip

    竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip

    3、当density=240时

    转化:转化系数=240/240

    屏幕实际分辨率为480px*800px (一个点对于一个分辨率)

    状态栏和标题栏高个38px或者25dip

    横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip

    竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip

    我们一般在项目中会定义多个适配资源文件夹(values-XXX,drawable-XXX等)

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

    drawable-mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px)

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

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

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

    (values也是一样,当然还有一点要注意:values和values-hdpi效果是一样的,drawable和drawable-hdpi效果也是一样的,所以一般我们都会在这两个文件夹中存放的值是一样的,如果两个都有的话,适配更好)

    apk的资源包中

    当屏幕density=240时,使用hdpi 标签的资源

    当屏幕density=160时,使用mdpi标签的资源

    当屏幕density=120时,使用ldpi标签的资源

    当屏幕density=320时,使用xhdpi标签的资源

    当屏幕density=480时,使用xxhdpi标签的资源

    不加任何标签的资源是各种分辨率情况下共用的

    所以布局时尽量使用单位dip,少使用px

    dp与px换算公式:
    pixs =dips * (densityDpi/160). 
    dips=(pixs*160)/densityDpi

  • 相关阅读:
    几数之和的题目
    File类
    递归
    Collections
    Map集合
    泛型
    类型通配符
    可变参数
    异常
    Collection集合
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5513240.html
Copyright © 2020-2023  润新知