Как конвертировать пиксели в дп? - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь создать простое приложение для Android на Java, но столкнулся с трудностями.

У меня есть список массивов, который содержит много растровых изображений, и я рисую их на холсте, но я использую измерение пикселей, и это не получается прямо на большинстве устройств.

Так есть ли способ узнать размер моего Графика в dp и масштабировать его до плотности / размера экрана с помощью dp и расположить его с помощью dp или dip.

Моя графика (квадраты):

Размер графики в ldpi = 50px

Размер графики в мдпи = 75 пикселей

Размер графики в формате hdpi = 100 пикселей

Все остальное в коде прекрасно, кроме того, что выглядит странно?

Буду признателен за любую помощь.

Джеймс.

Ответы [ 2 ]

7 голосов
/ 11 марта 2012

Из документации разработчика Android:

Виртуальный пиксельный модуль, который следует использовать при определении макета пользовательского интерфейса, чтобы выражать размеры или положение макета независимым от плотности способом. Плотно-независимый пиксель эквивалентен одному физическому пикселю на экране с разрешением 160 точек на дюйм, который является базовой плотностью, принятой системой для экрана «средней» плотности. Во время выполнения система прозрачно обрабатывает любое масштабирование единиц измерения dp по мере необходимости на основе фактической плотности используемого экрана. Преобразование единиц dp в пиксели экрана очень просто: px = dp * (dpi / 160). Например, на экране с разрешением 240 dpi 1 dp равен 1,5 физических пикселей. Вы должны всегда использовать единицы измерения dp при определении пользовательского интерфейса вашего приложения, чтобы обеспечить правильное отображение вашего пользовательского интерфейса на экранах с различной плотностью

Подробнее см. .

1 голос
/ 04 января 2013
/**
 * Convert dp in pixels
 * @param dp
 * @return
 */
public int getPx(int dp){       
    float scale = getResources().getDisplayMetrics().density;
    return((int) (dp * scale + 0.5f));
}
...