我正在尝试将像素转换为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;
}
答案 0 :(得分:75)
您可以直接查询它,而不是尝试从屏幕的密度分类中推断出dp转换因子:
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float logicalDensity = metrics.density;
logicalDensity将包含将dp乘以得到设备屏幕的物理像素尺寸所需的因子。
int px = (int) Math.ceil(dp * logicalDensity);