zoukankan      html  css  js  c++  java
  • android开发中用到的px、dp、sp

    先介绍一下这几个单位:

    px : pixels(像素),相应屏幕上的实际像素点。

    dip :device independent pixels,与密度无关的像素,基于屏幕密度的抽象单位。

    在每英寸160点的显示器上。

    1dp = 1px ,即1 :1关系。(dp 就是 dip)

    sp : scaled pixels(放大像素).与密度和字体缩放度无关的像素。 主要用于字体显示best for textsize。

    因为android设备屏幕杂乱,各种花样宽度和高度多的不行,加上各种山寨。

    当开发出一套layout后。痛苦的事情来了,屏幕适配。

    怎样保证layout在不同分辨率的屏幕下都能正常显示呢?以下我们来简单的分析一下android中一些经常使用的单位。


    px(像素)是UI设计师在PS中切图时使用的单位,手机屏幕中也相同有该显示单位。

    dp是android中开发layout时使用的尺寸单位。

    sp是开发layout时关于字体的字号单位,在设置字体单位为sp时,字体可随屏幕尺寸而自己主动拉伸适应。


    Android支持五种不同的dpi模式:ldpi、 mdpi、 hdpi、 xhdpi、 xxhdpi

    一般地,手机分辨率与所执行的dpi模式是匹配的。也就是会依据屏幕的尺寸载入Res下不同的dpi目录。

    比如 HVGA(320x480像素)的手机屏幕一般在3.5英寸左右。执行在mdpi模式下(也有奇葩机子例外)

    (这个是ROM控制的。app不能改变)。

    当执行在mdpi下时,1dp=1px:也就是说设计师在PS里定义一个item高48px。开发时就会定义该item高48dp;Photoshop中14px大的字体,开发时会定义为14sp。


    对于一部WVGA(480x800)手机,通常是执行在hdpi模式下。

    当执行在hdpi模式下时,

    1dp=1.5px:也就是说设计师在PS里定义一个item高72px。开发时就会定义该item高 48dp;

    Photoshop中21px大的字体。开发会定义为14sp。


    所以,当你的app须要适配多个dpi模式的时候(比如同一时候适配mdpi与hdpi),若你在WVGA下做设计(或者更高),你须要将各数值都为3的倍数,
    并在切图标注时将全部的数字( /3*2) 换算成dp。这样开发的同一套layout就能用在两个不同的dpi模式下,而不是写两套layout。

    当中的比例:
    mdpi与hdpi是2:3的关系
    mdpi与 xhdpi是1:2的关系
    ldpi与mdpi是3:4的关系
    比方我的机子红米,720 * 1280 的屏幕尺寸,就是执行在xhdpi下的。
    一种例外。有些比較山寨的Pad有可能是7英寸屏幕,分辨率为WVGA(480*800)执行在mdpi下。
  • 相关阅读:
    spring boot2X集成spring cloud config
    Spring boot配置文件application.properties和bootstrap.properties的区别
    (原)linux下caffe模型转tensorflow模型
    (原)torch7中指定可见的GPU
    (原)使用tensorboard显示loss
    (原)tensorflow保存模型及载入保存的模型
    (原)ubuntu挂载及开机自动挂载网络端的文件夹的方法
    (原+转)win7上编译caffe支持python及matlab
    (原)ubuntnu中anaconda的g++提示crtbeginS.o:unrecognized relocation
    (原)PyTorch中使用指定的GPU
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6717794.html
Copyright © 2011-2022 走看看