首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么“dp-象素”比率随屏幕密度而变化,但不一定成正比。

为什么“dp-象素”比率随屏幕密度而变化,但不一定成正比。
EN

Stack Overflow用户
提问于 2012-03-28 12:47:58
回答 1查看 1.6K关注 0票数 1

我有点担心我所读到的这里,它意味着没有基于dp和屏幕密度计算px的可靠公式(反之亦然):

dp :密度无关像素--一个基于屏幕物理密度的抽象单元.这些单位是相对于160 dpi (点每英寸)屏幕,其中1dp大约等于1 1px。当在较高密度的屏幕上运行时,用于绘制1dp的像素数将按照适合屏幕dpi的因子进行缩放。同样,在低密度屏幕上,用于1dp的像素数也会缩小。 dp与像素的比率会随屏幕密度而变化,但不一定是成正比的。使用dp单元(而不是px单元)的是一个简单的解决方案,可以根据不同的屏幕密度适当调整布局中的视图尺寸。换句话说,它为您的UI元素在不同设备上的真实大小提供了一致性。

我认为我们可以始终使用以下公式(解释为这里):px = dp * (dpi / 160)

然而,这个问题中的证词似乎突出了这样一种情况,即在dp中指定大小并不能保证设备之间的固定大小。

用粗体表示的句子的真正含义是什么?,我们需要使用mm来确保保持相同的感知大小吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-28 13:45:05

我认为我们总是可以使用以下公式(在这里解释):px = dp * (dpi / 160)

这个公式总是可以用于像素和dp之间的转换。只需确保使用DisplayMetrics.densityDpi作为公式中dpi的值。

然而,这个问题中的证词似乎突出了这样一种情况,即在dp中指定大小并不能保证设备之间的固定大小。

是的,确实,某个dp不能保证一个固定的跨设备感知到的大小。然而,它确实保证了一个类似的跨设备感知的大小。原因是在某些设备上,densityDpi (密度桶)与设备的物理dpi不同。有关更多细节,请参见我的回答向您链接的问题。

dp与像素的比值将随屏幕密度的变化而变化,但不一定成正比。

在这里,我认为他们指的是实际的屏幕密度,当他们说“屏幕密度”时,而不是手机属于哪个密度桶。

例如,物理dpi为270的设备属于“高”(240)密度桶,dp与像素的比值为240/160 = 1.5。

另一个物理dpi为290的设备属于"xhigh“(320)密度桶,dp与像素的比值为320/160 =2。

当您比较这些设备时,物理屏幕密度增加了7% (270个-> 290),而dp/像素比增加了33% (1.5 -> 2),所以它们之间不是一个直接的比例。

我们是否需要使用mm以确保保持相同的感知大小??

如果重要的是,在不同的设备之间,所接受的尺寸是尽可能相似的,那么您必须使用mm或英寸。但是,正如我在您所链接的问题中提到的那样,这有一些缺点。

同样重要的是要记住,有些设备的mm和英寸单元被破坏,有关这方面的更多信息,请参见问题为什么Lint在使用英寸或毫米(毫米)单位作为尺寸时显示警告?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9907842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档