Android转换Px到Dp(video长宽比)

可能重复:
android中将像素转换为dp

我正在尝试将像素转换为dp。 什么是公式?

让我们把640和480转换成dp。 文档说这个

dp单位到屏幕像素的转换很简单:px = dp *(dpi / 160)

但我不认为这是我所需要的(我不知道如何使用这个)。 我想我只需要forumla。 我准备好了代码:

DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); switch(metrics.densityDpi) { case DisplayMetrics.DENSITY_LOW: int sixForty = ? int fourEighty = ? break; case DisplayMetrics.DENSITY_MEDIUM: int sixForty = ? int fourEighty = ? break; case DisplayMetrics.DENSITY_HIGH: int sixForty = ? int fourEighty = ? break; } 

Related of "Android转换Px到Dp(video长宽比)"

而不是试图从屏幕的密度分类推断DP转换因子,你可以直接查询它:

 getWindowManager().getDefaultDisplay().getMetrics(metrics); float logicalDensity = metrics.density; 

logicalDensity将包含您需要乘以dp的因子以获取设备屏幕的物理像素尺寸。

 int px = (int) Math.ceil(dp * logicalDensity);