Android конвертирует Px в Dp (соотношение сторон видео)

Возможный дубликат:
конвертирование пикселей в dp в андроид

Я пытаюсь преобразовать пиксели в 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

Вместо того, чтобы вызывать коэффициент преобразования dp из классификации плотности экрана, вы можете просто запросить его напрямую:

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

logicalDensity затем будет содержать фактор, необходимый для умножения dp, чтобы получить физические размеры пикселей для экрана устройства.

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