Как сделать так, чтобы информация в пикселях работала на всех размерах экрана? - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть Галерея с изображениями текста и база данных, которая содержит позицию каждого текста в изображениях.
Позиция представлена ​​в пикселях, и в этом проблема:
Как я могу убедиться, чтоинформация работает для каждого разрешения экрана?
Изображения 300x400 ..

ПРИМЕЧАНИЕ: база данных уже содержит эти значения в пикселях. Я не могу их изменить.

Ответы [ 3 ]

3 голосов
/ 28 сентября 2011

Не указывайте позиции в пикселях, вместо этого используйте dp http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

и ознакомьтесь с этой информацией, чтобы узнать, как поддерживать несколько экранов: http://developer.android.com/guide/practices/screens_support.html

1 голос
/ 28 сентября 2011

Если вы не можете изменить значения dp, вы можете вместо этого проверить DisplayMetrics с помощью:

metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

с помощью metrics.densityDpi вы получите текущую плотность.

Затем установите переключательоператор для каждой плотности, добавляющий коэффициент масштабирования ко всем вашим значениям px, подобный этому:

switch (density) {
    case 120:
        scaleFactor = 0.75;
        break;

    case 160:
        scaleFactor = 1;
        break;

    case 240:
        scaleFactor = 1.5;
        break;

    case 320:
        scaleFactor = 2;
        break;

    default:
        break;
    }
0 голосов
/ 28 сентября 2011

Я предпочитаю, чтобы вы следовали стандартным размерам для hdpi, ldpi и mdpi. Они имеют размеры 480x800, 320x480 и 240x400 и помещают их в соответствующие папки. Ваше текущее разрешение сделает изображение растянутым для соответствия устройствам. Назовите все изображения с одинаковым именем. Android позаботится об остальном. :)

...