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

时间:2017-11-13 08:15:20

标签: android xml android-layout

我有在XHDPI中分离的屏幕。

我必须将dp的所有填充,边距值转换为LDPIMDPIHDPIXXHDPIXXXHDPI

任何人都可以建议我如何计算dp后续屏幕的值,假设paddingTop xhdpi 56dpldpi,那么我们给{的值是多少{1}},mdpixxhdpixxxhdpi

请建议我。

1 个答案:

答案 0 :(得分:4)

与密度无关的像素(dp)

  

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

如果你想知道xhdpi中56dp的含义,那么ddpi,mdpi,hdpi,xxhdpi,xxxhdpi中的56dp - 正如定义所说,它的密度独立像素

当您使用设计时,您想知道一件事:

设计的基线比例是什么?

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

Android定义了以下密度:

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

中间有一些罕见的情况,比如tvdpi,但在99%的情况下你可以简单地忽略它们。

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

了解基线后,您就知道如何将像素值从设计文档转换为倾斜 (与密度无关的像素)

公式非常简单,但如果你怀疑自己,可以尝试使用其中一个在线转换工具:

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

other way around

另外,请记得阅读Android开发者页面中的Best Practices

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