如何在android中计算LDPI,MDPI,HDPI,XXHDPI,XXXHDPI的dp

Man*_*mar 2 xml android android-layout

我有在 XHDPI 中设计的屏幕。

我必须将所有填充、边距值转换dpLDPI, MDPI, HDPI, XXHDPI,XXXHDPI

任何人都可以建议我如何计算dp以下屏幕的值假设我有paddingTop那么xhdpi我们56dp给出的值是 ldpi,,mdpixxhdpixxxhdpi

请建议我。

ant*_*ori 5

与密度无关的像素 (dp)

定义 UI 布局时应使用的虚拟像素单位,以与密度无关的方式表达布局尺寸或位置。与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理 dp 单位的任何缩放。dp 单位到屏幕像素的转换很简单:px = dp * (dpi / 160)。例如,在 240 dpi 屏幕上,1 dp 等于 1.5 个物理像素。在定义应用程序的 UI 时,应始终使用 dp 单位,以确保 UI 在不同密度的屏幕上正确显示。

如果你想知道 xhdpi 中的 56dp 是什么,那么 ldpi、mdpi、hdpi、xxhdpi、xxxhdpi 中的 56dp 也是如此 - 正如定义所说,它是与密度无关的像素

当您进行设计时,您想知道一件事:

设计的基线比例是多少?

一些快速答案:通常是 1x、2x,极少数情况下是 3x

Android 定义了以下密度:

  • ldpi(低)~120dpi
  • mdpi(中)~160dpi
  • hdpi(高)~240dpi
  • xhdpi(超高)~320dpi
  • xxhdpi(超高)~480dpi
  • xxxhdpi(超超超高)~640dpi

有一些罕见的情况介于两者之间,例如 tvdpi,但在 99% 的情况下,您可以简单地忽略它们。

当设计师说 1x 时,他们通常指的是mdpi,2x(或视网膜)指的是xhdpi,3x 设计是在xxhdpi中完成的。

一旦了解了基线,您就知道如何将设计文档中的像素值转换为dip (与密度无关的像素)

公式非常简单,但如果您怀疑自己,请随时尝试其中一种在线转换器工具:

公式如下:dp = px / (dpi / 160)其中dpi是当前屏幕密度,px是基本 (1x) 密度中的值。

或者反过来

另外,请记住阅读Android 开发者页面的最佳实践!


如果您最终仍然在尺寸文件中使用不推荐的 px,请查看此答案以了解如何为不同的屏幕创建不同的值文件夹。