Android: как определить размер ImageView на экране в дюймах - PullRequest
0 голосов
/ 10 февраля 2019

Вот некоторая справочная информация.Я делаю приложение для Android, которое требует, чтобы ImageView отображалось на экране в одинаковом физическом размере (xInches by yInches) независимо от устройства, на котором отображается изображение.У меня проблема в том, что размер ImageView по умолчанию меняет размер в зависимости от текущего разрешения экрана и размера экрана.

Мне нужна функция, которая:

  • Имеет входные данные для ImageView, которые мне нужно изменить, x (в дюймах) предпочтительного размера и y (в дюймах) предпочтительного размера
  • Вычисляет размеры в пикселях чего-то x по yдюймы (магия, которую мне нужно выяснить, как реализовать)
  • Возвращает рассчитанные размеры x и y в dpi / px или что-то, что я могу легко применить к ImageView

IЯ немного новичок в разработке для Android, поэтому я не на 100% знаком с различными системами координат, такими как px и dpi, но все, что я ищу, - это способ сопоставить эти системы координат с физическими координатами.

Кстати, я использую только дюймы, потому что живу в США. Однако я хочу сказать, что любая единица измеряет физическое пространство , а не осыпьn пробел .

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

как я понимаю ваш вопрос:

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

0 голосов
/ 10 февраля 2019

Для такой задачи вам, вероятно, потребуется найти dpi устройства, а затем изменить размер изображения на основе этого.Так что-то вроде

String inchesToDp(int x, int y){

    DisplayMetrics metrics = getResources().getDisplayMetrics();
    //int densityDpi = metrics.densityDpi;  used for general purpose
    int xInch = x * metrics.xdpi;     //1 inch in dpi is just the amount of dpi
    int yInch = y * metrics.ydpi;     //x and ydpi give exact lcd dpi for horizontal and vertical but you could just use x * densityDpi if it doesn't matter

    return "x in dp: " + xInch + "y in dp: " + yInch;

}
...