android定义密度无关的像素

时间:2012-09-01 05:09:28

标签: android

我是android新手。我读到了DP,但仍然感到困惑。在一个定义中,它说 - dp(与密度无关的像素):基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。

是不是意味着 - 160点= 1 dp = 1 px(每个点是1个像素,对吧?) 或者,160点中的1 dp = 1点(像素)

请求澄清

2 个答案:

答案 0 :(得分:14)

与密度无关的像素是您在定义UI布局时应使用的虚拟像素单元,以与密度无关的方式表达布局尺寸或位置。

与密度无关的像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理dp单元的任何缩放。将dp单位转换为屏幕像素非常简单:

px = dp * (dpi / 160)

例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。在定义应用程序的UI时,应始终使用dp单位,以确保在具有不同密度的屏幕上正确显示UI。

对于160 dpi的屏幕,1 dp等于1 px。

请参阅this博客和this回答。

答案 1 :(得分:0)

android文档说 -

与密度无关的像素相当于160 dpi屏幕上的一个物理像素,即平台假定的基线密度(如本文档后面所述)。在运行时,平台根据所使用的屏幕的实际密度透明地处理所需的dp单元的任何缩放。 dp单位到屏幕像素的转换很简单:像素= dps *(密度/ 160)。例如,在240 dpi屏幕上,1 dp将等于1.5个物理像素。强烈建议使用dp单位来定义应用程序的UI,以确保在不同屏幕上正确显示UI。

您可以查看supporting multiple screens。你也可以看看这个question