dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算

article/2025/8/29 3:26:53

一、基本概念

  • dip        : Density independent pixels ,设备无关像素。
  • dp        :就是dip
  • px        : 像素
  • dpi       :dots per inch , 直接来说就是一英寸多少个像素点。常见取值 120,160,240。我一般称作像素密度,简称密度
  • density : 直接翻译的话貌似叫 密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc)
  • 分辨率   : 横纵2个方向的像素点的数量,常见取值 480X800 ,320X480
  • 屏幕尺寸: 屏幕对角线的长度。电脑电视同理。
  • 屏幕比例的问题。因为只确定了对角线长,2边长度还不一定。所以有了4:3、16:9这种,这样就可以算出屏幕边长了。

二、应用

  在android里面,获取一个窗口的metrics,里面有这么几个值

     metrics.density; metrics.densityDpi;

  densityDpi : 就是我们常说的dpi。

  density      :  其实是 DPI / (160像素/英寸) 后得到的值。是不是有点奇怪,因为我带了单位。。。这个涉及到后面一个比较重要的东西,后面再说。

  从上面就看得出了,DPI本身的单位也是 像素/英寸,所以density其实是没单位的,他就是一个比例值。

  而dpi的单位是 像素/英寸,比较符合物理上面的密度定义,密度不都是单位度量的值么,所以我更喜欢把dpi叫像素密度,简称密度,density还是就叫density。

三、各单位间转换

1. 计算dpi 

  比如一个机器,屏幕4寸,分辨率480X800,他的dpi能算么。
  因为不知道边长,肯定不能分开算,4是对角线长度,那直接用勾股定理算对角线像素,除以4,算出来大概是 dpi = 233 像素/英寸。

       计算方法:

      1)根据勾股定理计算对角线的平方:

        480*480 + 800*800 = 870400

      2)对870400开平方,得到对角线的像素数

          932.9523031752481

       3)对角线的像素数除以4英寸,得到dpi

          932.9523031752481/4 = 233.238075793812


  那么density就是 (233 px/inch)/(160 px/inch)=1.46 左右

  顺带说下,android默认的只有3个dpi,low、medium和high,对应 120、160、240,如果没有特别设置,所有的dpi都会被算成这3个,具体可以参考下这个帖子
  http://android.tgbus.com/Android/tutorial/201103/347176.shtml
  其中的default就是160。

2. 计算 dp 与 px

  我们写布局的时候,肯定还是要知道1个dp到底有多少px的。

  换算公式如下: dp = (DPI/(160像素/英寸))px = density px

  注意,这里都是带单位的。px是单位,dp是单位,density没单位。

  为了方便,假设dpi是240 像素/英寸 , 那么density就是1.5

  那么就是 dp=1.5px ,注意这是带了单位的,也就是 设备无关像素 = density 像素

  那么转换为数值计算的话,应该是下面这个式子

  PX = density * DP

也就是
  像素值 = density * 设备无关像素值 ,请注意这里有个值字。

 3. 为啥 标准dpi = 160

  (1)Android Design [1] 里把主流设备的 dpi 归成了四个档次,120 dpi、160 dpi、240 dpi、320 dpi

  实际开发当中,我们经常需要对这几个尺寸进行相互转换(比如先在某个分辨率下完成设计,然后缩放到其他尺寸微调后输出),一般按照 dpi 之间的比例即 2:1.5:1:0.75   来给界面中的元素来进行尺寸定义。

  也就是说如果以 160 dpi 作为基准的话,只要尺寸的 DP 是 4 的公倍数,XHDPI 下乘以 2,HDPI 下乘以 1.5,LDPI 下乘以 0.75 即可满足所有尺寸下都是整数 pixel 。

  但假设以 240 dpi 作为标准,那需要 DP 是 3 的公倍数,XHDPI 下乘以 1.333,MDPI 下乘以 0.666 ,LDPI 下除以 2

  而以 LDPI 和 XHDPI 为基准就更复杂了,所以选择 160 dpi

     (2)这个在Google的官方文档中有给出了解释,因为第一款Android设备(HTC的T-Mobile G1)是属于160dpi的。

四、 示例分析

1. 屏幕尺寸(screen size)

  就是我们平常讲的手机屏幕大小,是屏幕的对角线长度,一般讲的大小单位都是英寸。
  比如iPhone5S的屏幕尺寸是4英寸。Samsung Note3是5.7英寸。

  

图 1

2.像素(pixel)

  想像把屏幕放大再放大,对!看到的那一个个小点或者小方块就是像素了。

图 2

3.分辨率(Resolution)

  是指屏幕上垂直方向和水平方向上的像素个数。
  比如iPhone5S的分辨率是1136*640;Samsung Note3的分辨率是1920*1080;

图 3 

4.dpi

  是dot per inch的缩写,就是每英寸的像素数,也叫做屏幕密度。这个值越大,屏幕就越清晰。
  iPhone5S的dpi是326; Samsung Note3 的dpi是386

Samsung Note3是5.7英寸。

Samsung Note3的dpi计算方法:

1)根据勾股定理计算对角线的平方:

        1920*1920 + 1080*1080 = 4852800

      2)对4852800开平方,得到对角线的像素数

          2,202.907170082298

       3)对角线的像素数除以对角线的长度5.7英寸,得到dpi

          2,202.907170082298/5.7 = 386.4749421197015

图 4

5.dip

  是Density independent pixel的缩写,指的是抽象意义上的像素。跟设备的屏幕密度有关系。

  它是Android里的一个单位,dip和dp是一样的。

Google的官方说明是这样的:
  Density-independent pixel (dp)
  A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way.
The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities.

  就是说在160dpi的屏幕上,1dip=1px。
  它跟屏幕密度有关,如果屏幕密度大,1dip代表的px就多,比如在320dpi的屏幕上,1dip=2px。

为什么我们在布局的时候最好要用dip,不要用px?

   是因为这个世界上存在着很多不同屏幕密度的手机,屏幕密度是什么?就是dpi,就是单位长度里的像素数量。

  想象一下,如果这些手机的尺寸一样,屏幕密度相差很大,那么是不是说一个手机水平方向上像素很少,另一个手机水平方向上像素很多?那我们画同样pix数量的时候,它显

  示的长度不就会不一样了?

  比如下面图中的两个手机,同时设置2px长度的Button,在屏幕密度较高的手机里就会显示的比较小。

  而同时设置的2dip长度的Button,在两个手机上显示的大小是一样的。

图 5

  所以如果你在App布局中都用的px作为单位,那么你的App跑在各个设备上就会出现奇奇怪怪的现象了。 

  来看一下emulator上的效果,我定义了两个Button,分别用px和dip做单位。

  布局文件里这样写

<Button android:layout_width="100px"android:layout_height="100px"android:text="@string/str_button1"/><Button android:layout_width="100dip"android:layout_height="100dip" android:text="@string/str_button1"/>

显示的界面是这样的:

  

图 6 

  getResources().getDisplayMetrics().densityDpi 就是屏幕密度。
  getResources().getDisplayMetrics().density 也可以理解为1dip相当于多少个px啦。
  上面的dpi是240,1dip=1.5px
  你看,100dip的Button是100pxButton的1.5倍长吧。

分辨率又称解析度,一般理解为屏幕显示像素的多少,以1024*768为例,这个分辨率表达的意思是,屏幕将有横向1024行竖向768行点阵组成,我们看到的各种文字、图片、窗口等都是有这些一个个的点阵组成。一般认为,屏幕分辨率越高图像的精细度越高,但是,并不是每一个显示屏都能支持无限的高,相反,过高的分辨率设置会使文字和图像变小影响观察效果,更有甚,过高的分辨率还会使屏幕无法显示,变成黑屏。
分辨率怎么调 -介绍别外几种解决方法
方法1、这是最常规的方法:右键桌面空白处,选择“属性”—“设置”,在设置标签的窗口左下方有一个“屏幕分辨率”,向左右拖动控制块就可以改变屏幕的分辨率(每次拖动注意下面的数字),确认某一个分辨率数值之后就可以点击“确定”。
方法2、(以Intel显卡为例)右键桌面空白处,选择“显示器模式”—“真彩色”—“1024 * 768”(此处根据需要选择,但不建议太高)等;
方法3、(以Intel显卡为例)右键桌面空白处,选择“属性”—“设置”,在设置标签的窗口右下方有一个“高级”—“适配器”—“所有模式”,选择一种合适的模式组合即可(特别注意不要选择太高的刷新率赫兹数)。
分辨率调不了
一般的显示分辨率是可以调整的,最少会有2-3个调整的空间,如果不让调整多数是显卡驱动的问题,或者处于安全模式。
如果是处于安全模式,你可以选择重新启动,按F8选择“最近一次的正确配置”,进入正常的桌面;如果是正常启动可以考虑显卡驱动是否有故障,这一点,你可以通过右键“我的电脑”—“属性”—“硬件”—“设备管理器”查看显卡项目前是否有感叹号和问号来判断是否是显卡驱动的问题,如果有,重新安装一遍显卡驱动。
调整分辨率黑屏 电脑开机黑屏怎么办?
调整分辨率黑屏往往是由于分辨率过高与刷新率过高的组合影响,比如,1024*768 75HZ的显示模式正常,但1280*960 75HZ有可能导致黑屏,也许你会说我并没有调整刷新率(75HZ),但这个组合可能会使显示器无法承受(特别是15寸的显示器以及17寸以下的)所以降低分辨率或者降低刷新率都是解决因为调整而造成黑屏的途径。
解决的办法像像上面提到的,选择重新启动,按F8选择“最近一次的正确配置”,或者启动一次安全模式(按F8进入安全模式)自动修复一下,然后重新启动即可。
以上为大家介绍的就是比较常遇到的关于电脑分辨率的问题,一般每台电脑都有一个最佳分辨率,大家可以尝试修改到自己觉得最满意的即可,如果尝试以上多种方法都不行,建议重新安装系统或者系统还原来解决。
强行设置分辨率的方法(突破原来的分辨率上限)
这个方法可以让上网本实现更高的分辨率,而且不需要装任何软件,对任何显示器都有效哦!
不用装任何软件,轻松实现上网本虚拟分辨率(新方法)
众所周知,上网本的屏幕分辨率不大,最小的才800*480,大部分不过1024*600。这样的分辨率执行各种程序的时候都会有问题,最常见的就是不支持标准分辨率,导致只能用低分辨率玩,甚至是没法玩(游戏)。
而目前流行的虚拟分辨率程序,不是效率太低画面刷新就像刷油漆一样慢,就是使用极其不方便。
其实有一种简单的方法,可以不用装任何软件即可让上网本实现虚拟的压缩分辨率效果。
1、打开显示器的属性,选择:设置->高级->监视器;
2、这里我们可以看到监视器类型是默认的”即插即用显示器“,我们点击”属性”->驱动程序->更新驱动程序;
3、然后选择”从列表或指定位置安装(高级)“,点击下一步,选择”不要搜索,我要自己选择要安装的驱动程序“;
4、进去选择驱动画面后,去掉”显示兼容硬件“上的勾;
5、在这里,请选择”(标准监视器类型)”中的”Digital Flat Panel(1024*768)“,当然你也可以选择分辨率更高的”Digital Flat
Panel(1600*1200)”之类的,但是我觉得EPC屏幕太小更高并不具有实际意义;
6、点击”下一步“,完成显示器驱动的替换工作。
OK,现在完成工作了。现在你可以在显示器里面选择用1024*768的分辨率了。
如果屏幕需要拖动才能显示完整画面,请用键盘上的屏幕切换快捷键(就是第一个四个功能键的第二个)切换到1024*768
press显示模式,即可显示完整的1024*768压缩画面了!
这样,你的上网本就能轻松支持1024的画面,并拥有和原来一样的显示速度!
通过一些软件,因为有时候是因为硬件的问题,或按钮不能使用了,只有通过软件的方法来调整。

参考:电脑分辨率怎么调,调好之后为什么感觉屏幕变宽了?


http://chatgpt.dhexx.cn/article/3dAy52Mt.shtml

相关文章

什么是 PPI、DPI 及 像素、分辨率的区别?

什么是 PPI、DPI 及 像素、分辨率的区别&#xff1f; AbstractPPIDPI像素 Pixels分辨率 Resolution Abstract 笔者通过本篇文章重点来阐明相对迷惑的PPI、DPI概念&#xff0c;PPI 和 DPI 是处理图像时需要深入理解的概念&#xff0c;两者都指的时分辨率或清晰度&#xff0c;但…

DPI、像素与分辨率的区别和联系

DPI&#xff08;Dot Per Inch&#xff09; 表示打印分辨率&#xff0c;指每英寸长度上的点数。DPI 又可细分为水平分辨率和垂直分辨率&#xff0c;例如一张 “1英寸*1英寸” &#xff08;1英寸2.54cm&#xff09;的图片&#xff0c;如果它的水平分辨率是100 dpi&#xff0c;垂直…

一文详解像素、DPI、分辨率之间的关系

1.像素 像素&#xff1a;是指在由一个数字序列表示的图像中的一个最小单位&#xff0c;称为像素。 像素可以用一个数表示&#xff0c;比如一个“0.3兆像素”数码相机&#xff0c;它有额定30万像素&#xff1b;也可以用一对数字表示&#xff0c;例如“640x480显示器”&#xff0…

分辨率、Dpi 的关系

概念&#xff1a;分辨率&#xff0c;指的是图像或者显示屏在长和宽上各拥有的像素个数。比如一张照片分辨率为1920x1080&#xff0c;意思是这张照片是由横向1920个像素点和纵向1080个像素点构成&#xff0c;一共包含了1920x1080个像素点。dpi是分辨率的表示单位之一。它是英文D…

图片分辨率像素与DPI的关系

来自网络的一张图片&#xff1a;https://www.duitang.com/blog/?id788101874 这张图片大小(通过鼠标右键点击菜单"属性"获得): 这里面图片的分辨率和dpi两种值。 现在讲讲两者关系。 将图片复制粘贴到word,我们可以获得图片的"原始尺寸"。 如下图所示…

SPSS新手教程——进行距离分析的方法

我们在使用IBM SPSS Statistics来进行数据分析的时候&#xff0c;难免会遇上这种情况:变量非常多&#xff0c;多到我们不能对其一一控制的地步&#xff0c;但每个变量都有分析的价值&#xff0c;同时又彼此重叠。这个时候最直接的方法就是把所有变量按照一定的标准来进行分类&a…

SPSS的入门

1.SPSS的起源 SPSS&#xff08;全称&#xff1a;Statistical Product and Service Solutions&#xff09;是世界上最早的统计分析软件&#xff0c;由美国斯坦福大学的三位研究生Norman H. Nie、C.Hadlai (Tex) Hull和Dale H. Bent于1968年研发成功。SPSS采用类似EXCEL表格的方…

SPSS 独立样本t检验方法

检验变量&#xff1a;要做检验的变量 分组变量&#xff1a;选择给数据分组的变量 这里只能检验两个组间的差异&#xff0c;因此只能输入两个组 组1&#xff0c;组2&#xff1a;输入你分组变量中的值 比如&#xff0c;我这里检验得是ADHD与CN之间的差异&#xff0c;所以我输入…

使用SPSS进行商业数据分析

SPSS是一款非常强大的数据处理软件&#xff0c;那么该如何用SPSS进行数据分析呢&#xff1f; 1.什么是SPSS SPSS是社会统计科学软件包的简称&#xff0c; 其官方全称为IBM SPSS Statistics。SPSS软件包最初由SPSS Inc.于1968年推出&#xff0c;于2009年被IBM收购&#xff0c;主…

spss分析方法-判别分析

判别分析是在分组已知的情况下&#xff0c;根据已经确定分类的对象的某些观测指标和所属类别来判断未知对象所属类别的一种统计学方法。下面我们主要从下面四个方面来解说&#xff1a; 实际应用理论思想建立模型 分析结果 一、实际应用 判别分析最初应用于考古学, 例如要根…

spss分析方法-T检验

t检验&#xff0c;也称student t检验&#xff08;Students t test&#xff09;&#xff0c;主要用于样本含量较小&#xff08;例如n < 30&#xff09;&#xff0c;总体标准差σ未知的正态分布。t检验是用t分布理论来推论差异发生的概率&#xff0c;从而比较两个平均数的差异…

spss分析方法-方差分析

方差分析(Analysis of Variance&#xff0c;简称ANOVA)&#xff0c;又称“变异数分析”&#xff0c;是R.A.Fisher发明的&#xff0c;用于两个及两个以上样本均数差别的显著性检验。由于各种因素的影响&#xff0c;研究所得的数据呈现波动状。造成波动的原因可分成两类&#xff…

如何使用SPSS进行计算变量的操作

当我们在进行数据分析时&#xff0c;除了对比现有的数据信息外&#xff0c;还能通过现有的数值计算出其他变量的参数。不过这就需要用到IBM SPSS Statistics中计算变量命令了。今天&#xff0c;我就以一组产品销售的数据为例&#xff0c;向大家演示一下SPSS计算变量的操作方法。…

spss分析方法-聚类分析

聚类分析是根据研究对象的特征&#xff0c;按照一定标准对研究对象进行分类的一种分析方法。下面我们主要从下面四个方面来解说&#xff1a; 实际应用理论思想建立模型 分析结果 一、实际应用 聚类分析的目标就是在相似的基础上收集数据来分类。 聚类源于很多领域&#xf…

spss分析方法-回归分析

回归分析是研究一个因变量与一个或多个自变量之间的线性或非线性关系的一种统计分析方法。下面我们主要从下面四个方面来解说&#xff1a; 实际应用理论思想建立模型 分析结果 一、实际应用 回归分析方法理论成熟&#xff0c;它可以确定变量之间的定量关系并进行相应的预测…

SPSS教程——游程检验使用方法,如何验证数据的随机性

变量值随机性检验、卡方检验和二项分布检验在IBM SPSS Statistics中都属于非参数检验。变量值随机性检验主要是检验数据是否具有随机性&#xff0c;游程检验就是所涉及的具体方法。所谓游程就是对于整个样本序列中连续出现相同变量值的次数。游程数过大过小都说明变量值存在不随…

spss怎样使用计算机,spss如何进行反向计分?

第一页&#xff1a;spss如何进行反向计分&#xff1f; 第二页&#xff1a;spss如何进行反向计分&#xff1f;2 在心理学中经常使用反向计分的问卷&#xff0c;这种问卷获得数据在处理以前&#xff0c;要先进行重新编码。重新编码的目的就是要将反向计分的数据转换成正向计分&am…

SPSS说明附学习方法

[TO Spss是用来做什么的&#xff1f; spss是一个非常好用的统计分析软件&#xff0c; spss用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务软件&#xff1b; 使用优点&#xff1a; ① 、SPSS for Windows的分析结果清晰、直观、易学易用&#x…

Spss乱码问题的解决方法

Spss乱码问题的解决方法 方法1&#xff1a;网友kuangsir6提供 选择字体为&#xff1a;DFKai-SB 格式&#xff08;我并没有找到这个格式&#xff09;方法是 SPSS&#xff08;PASW&#xff09;—Edit—Options—Viewer—Title&#xff08;以及Page Title和Text Output下面的&am…

使用spss进行系统聚类分析

按以下步骤进行操作 1&#xff09;导入数据 北京 8070.40 2643.00 12128.00 2511.00 5077.90 4054.70 2629.80 1140.60 天津 8679.60 2114.00 6187.30 1663.80 3991.90 2643.60 2172.20 892.20 河北 4991.60 1614.40 4483.20 1351.10 2664.10 1991.30 1549.90 460.40 山西 3862…