zoukankan      html  css  js  c++  java
  • Android——dpi相关知识总结

    1.术语和概念

    术语

    说明

    备注

    Screen size(屏幕尺寸)

    指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸......

    nexus4手机是4.7英寸

    Aspect Ratio(宽高比率)

    指的是实际的物理尺寸宽高比率,分为long和nolong

    nexus4是16:10,属于long

    Resolution(分辨率)

    和电脑的分辨率概念一样,指手机屏幕纵、横方向像素个数

    nexus4是1280*768

    DPI(dot per inch)

    每英寸像素数,如120dpi,160dpi等,假设QVGA(320*240)分辨率的屏幕物理尺寸是(2英寸*1.5英寸),dpi=160

    可以反映屏幕的清晰度,用于缩放UI的

    Density(密度)

    屏幕里像素值浓度,resolution/Screen size可以反映出手机密度,

    Density-independent pixel (dip)

    指的是逻辑密度计算单位,dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)

    Pixel Per Inch(ppi)

    在图像中每英寸所表达的像素数目。从输出设备(如打印机)的角度来说,图像的分辨率越高,所打印出来的图像也就越细致与精密。打印分 辨率使用的单位是DPI(Dot Per Inch),意思是:每英寸所表达的打印点数。



    注:
    DPI用来表示输出设备的输出精度,如打印机,显示器,DPI表示的是 像点/英寸(每英寸长度上有多少个打印点或像点)PPI用来表示输入设备的输入精度,如扫描仪,数码相机,PPI表示的是 像素/英寸(每英寸长度上有多少个像素)

    DPI值计算

    比如:计算WVGA800*480)分辨率,3.7英寸的密度DPI,Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252

    px、dp、dip、dpi、sp 等到底有什么联系区别?产生的根源和设计时的影响如何?是否屏幕密度的决定原因?

    px(像素)是我们UI设计师在PS里使用的(不解释),同时也是手机屏幕上所显示的(也不解释)
    dp是开发写layout的时候使用的尺寸单位,sp是开发写layout时关于字体的字号单位,且dp与sp总为1:1关系。

    Android支持四种不同的dpi模式:ldpi mdpi hdpi xhdpi
    一般地,手机分辨率与所运行的dpi模式是匹配的,例如hvga(320x480像素)的手机屏幕一般在3.5英寸左右,运行在mdpi模式下(也有例外,稍后解释)(这个是ROM控制的,app不能改变)。当运行在mdpi下时,1dp=1px:也就是说设计师在PS里定义一个item高48px,开发就会定义该item高48dp;Photoshop中14px大的字体,开发会定义为14sp。

    对于一部wvga(480x800)手机(G7、N1、NS),一般是运行在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的关系

    Galaxy Nexus 是720P屏幕,就是运行在xhdpi下的。

    可以想见为什么iOS的开发者升级到 Retina Display 是多么的无痛

    参考链接:

    DPI与PPI: http://blog.csdn.net/wuyao721/article/details/5286753

    px、dp、dip、dpi、sp说明:http://www.zhihu.com/question/19625584

     

  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/gis-luq/p/3468770.html
Copyright © 2011-2022 走看看