Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mobile dp、dip、dpi、ppi、像素和英寸之间的关系如何?_Mobile_User Interface_Pixels_Dpi_Density Independent Pixel - Fatal编程技术网

Mobile dp、dip、dpi、ppi、像素和英寸之间的关系如何?

Mobile dp、dip、dpi、ppi、像素和英寸之间的关系如何?,mobile,user-interface,pixels,dpi,density-independent-pixel,Mobile,User Interface,Pixels,Dpi,Density Independent Pixel,我在阅读,但我仍然有一些关于dp/dpi、ppi、px和英寸的问题。我无法比较它们。。。一英寸是最大的吗 他们说160 dpi意味着每英寸160像素。这是否意味着1英寸包含160像素 他们还说,160 dpi屏幕上的1像素=1 dp。这是否意味着1个像素和1个dp相等 最后,为什么我们应该使用dp而不是px?我知道这很理想,但为什么呢?DP是仅考虑屏幕物理尺寸时的分辨率。当您使用DP时,它会将您的布局缩放到具有不同像素密度的其他类似大小的屏幕 不过,有时候你确实需要像素,当你在代码中处理尺寸时,

我在阅读,但我仍然有一些关于dp/dpi、ppi、px和英寸的问题。我无法比较它们。。。一英寸是最大的吗

他们说160 dpi意味着每英寸160像素。这是否意味着1英寸包含160像素

他们还说,160 dpi屏幕上的1像素=1 dp。这是否意味着1个像素和1个dp相等


最后,为什么我们应该使用dp而不是px?我知道这很理想,但为什么呢?

DP是仅考虑屏幕物理尺寸时的分辨率。当您使用DP时,它会将您的布局缩放到具有不同像素密度的其他类似大小的屏幕

不过,有时候你确实需要像素,当你在代码中处理尺寸时,你总是在处理真实的像素,除非你转换它们。

你应该(几乎)总是使用灵活的大小单位,比如
dp
,它是密度无关的像素,因为一台设备上的
300px
屏幕不一定与另一台设备上的
300px
屏幕不动产相同。最大的实际含义是,在密度与设计目标不同的设备上,您的布局会明显不同

  • dp
    dip
    表示与密度无关的像素
  • dpi
    ppi
    表示每英寸点数(或像素)
  • 英寸
    是与实际屏幕大小相连的物理测量值
  • px
    表示像素-像素根据密度填充任意数量的屏幕区域
例如,在
160dpi
屏幕上,
1dp==1px==1/160in
,但在
240dpi
屏幕上,
1dp==1.5px
。所以不,
1dp!=1px
。只有一种情况是
1dp==1px
,它出现在
160dpi
屏幕上。像英寸这样的物理测量单位不应该成为你设计的一部分,也就是说,除非你在做尺子

确定多少像素
1dp
的简单公式是
px=dp*(dpi/160)

dp、dip、dpi、ppi、像素和英寸之间的关系如何

为了android开发的目的:

dp = dip
dpi = ppi
inch x dpi = pixels
dp = 160 x inch
dp = 160*pixels/dpi
因此,在160dpi手机(mdpi)上:

在180 dpi手机上:

2 inches = 320 dp
2 inches = 360 pixels
请注意,2英寸始终是320dp,与屏幕大小无关。dp是1/160英寸的物理距离

dp-to-pixels公式很有趣:

dp = 160*pixels/dpi
相当于:

dp = pixels/(dpi/160)

dpi/160
是一个有趣的因素。它是相对于android的mdpi容器的相对密度,以及您必须为各种资源容器缩放图形的数量。您将在第页中多次看到该系数,0.75是ldpi的系数。

我将使用一个示例进行解释

float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
float dp = somePxValue / density;
密度等于

.75 on ldpi (120 dpi)
1.0 on mdpi (160 dpi; baseline)
1.5 on hdpi (240 dpi)
2.0 on xhdpi (320 dpi)
3.0 on xxhdpi (480 dpi)
4.0 on xxxhdpi (640 dpi)
那么比如说,

我有一台三星S5,dpi
432
()

所以,
density=432/160=手机的dpi/基线=2.7

假设我的顶栏是
48dp
。这是参考
基线(160dpi)

因此,w.r.t我的S5将是
48dp*2.7

如果我想看到实际高度:


它将是
(48dp*2.7)/432 dpi=0.3英寸

dp是一种与英寸类似的物理测量值。(是的,请继续阅读。)

“dp对应于160 dpi像素的物理大小”()

160 dpi时像素的物理大小正好是1/160英寸。因此,dp的尺寸为1/160英寸。160 dp=1英寸

Px是屏幕上某种程度上任意的测量单位

有关在不同设备上dp在px中转换为什么的示例,请参见此处:


请记住,很多android屏幕的分辨率和密度都不同,看看这是否有帮助:@steve blackwell:我正在读这篇文章!但我无法进行比较:\市场上有很多屏幕密度,所以你当然可以利用这些计算。我不知道你为什么会这样,但你绝对可以。例如,如果您想知道在240dpi屏幕上300 dp将占用多少像素,
300*(240/160)=450像素
@ChrisCashwell,那么在创建要使用的这些图像时,在定义它们时使用哪些数字?使用规定的宽度和高度大小以及分辨率密度?实际上,1英寸大约是160dp,因此可以将其视为某种测量…@TusharPandey DP是与密度无关的像素,DPI是每英寸点数。DP是指基于给定屏幕上像素密度的抽象单位,而DPI是指每英寸的“点”数。您可以根据屏幕的DPI值得出屏幕上的DP数。160 DP=1英寸。Google specs说:“一个dp对应于一个像素在160 dpi时的物理大小。”一个像素在160 dpi时的物理大小正好是1/160英寸。因此,160 dp=1英寸。因此,当创建图像时,以像素为单位的分辨率是相同的,只是更改了物理大小?因此,在使用Photoshop时,您可以坚持默认的每英寸72像素,然后以像素数表示正确的宽度/高度?我想知道为什么他们可以使用英寸或厘米来表示这种新的测量单位“dp”。不幸的是,将dp与物理尺寸等同不再是正确的方法。许多设备现在允许您更改屏幕缩放级别,这意味着160dp在每个缩放级别上具有不同的物理大小。这些通过改变设备的“逻辑”屏幕密度(320dpi、240dpi等)工作。因此,准确地说,当逻辑dpi与物理dpi(每英寸物理像素数)匹配时,160dp为1英寸。请注意,这些设备中的某些设备不会默认为1x缩放。例如,三星S5e的物理密度约为288dpi,但出厂默认逻辑密度为360dpi
.75 on ldpi (120 dpi)
1.0 on mdpi (160 dpi; baseline)
1.5 on hdpi (240 dpi)
2.0 on xhdpi (320 dpi)
3.0 on xxhdpi (480 dpi)
4.0 on xxxhdpi (640 dpi)