我有在XHDPI中分离的屏幕。
我必须将dp
的所有填充,边距值转换为LDPI
,MDPI
,HDPI
,XXHDPI
,XXXHDPI
任何人都可以建议我如何计算dp
后续屏幕的值,假设paddingTop
xhdpi
56dp
为ldpi
,那么我们给{的值是多少{1}},mdpi
,xxhdpi
和xxxhdpi
请建议我。
答案 0 :(得分:4)
在定义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定义了以下密度:
中间有一些罕见的情况,比如tvdpi,但在99%的情况下你可以简单地忽略它们。
当设计师说1x时,他们通常会提到 mdpi ,2x(或视网膜)指的是 xhdpi ,3x设计是在 xxhdpi 中完成的
了解基线后,您就知道如何将像素值从设计文档转换为倾斜 (与密度无关的像素)。
公式非常简单,但如果你怀疑自己,可以尝试使用其中一个在线转换工具:
公式如下: dp = px /(dpi / 160)其中 dpi 是当前屏幕密度, px 是基数(1x)密度值。
另外,请记得阅读Android开发者页面中的Best Practices!
如果您仍然最终在尺寸文件中使用不推荐的px,请查看this answer以了解如何为不同的屏幕创建不同的值文件夹。