Android将Px转换为Dp(视频宽高比)

时间:2011-07-11 21:03:43

标签: android screen-resolution aspect-ratio

  

可能重复:
  converting pixels to dp in android

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

允许将640和480转换为dp。文档说这个

  

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

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

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;
    }

1 个答案:

答案 0 :(得分:75)

您可以直接查询它,而不是尝试从屏幕的密度分类中推断出dp转换因子:

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

logicalDensity将包含将dp乘以得到设备屏幕的物理像素尺寸所需的因子。

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