Mobile dp、dip、dpi、ppi、像素和英寸之间的关系如何?
我在阅读,但我仍然有一些关于dp/dpi、ppi、px和英寸的问题。我无法比较它们。。。一英寸是最大的吗 他们说160 dpi意味着每英寸160像素。这是否意味着1英寸包含160像素 他们还说,160 dpi屏幕上的1像素=1 dp。这是否意味着1个像素和1个dp相等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而不是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,dpi432
()
所以,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)