путаница размеров при использовании единиц измерения dp для размещения изображений в определенных местах - PullRequest
0 голосов
/ 08 июня 2011

ОК, так что представьте, что у вас есть фоновое изображение (масштабированное, чтобы заполнить всю ширину / высоту устройства), которое содержит произвольный рисунок и два прямоугольника.Теперь, если я хочу разместить изображение в каждом прямоугольнике, я не вижу, как я могу использовать единицы измерения dp для этого.Из документов Android:

Например, представление с layout_width = "100dp" измеряет 100 пикселей в ширину на экране средней плотности, а система масштабирует его до 150 пикселей в ширину на экране высокой плотности, так что представление занимает примерно одинаковое физическое пространство на экране.

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

Означает ли это, что единственная доступная опция, гарантирующая, что изображения имеют одинаковый размер независимо от плотности / разрешения, - это включение функций преобразования?Это, кажется, идет вразрез с причиной существования dp, что заставляет меня поверить, что я понимаю это неправильно.Любое понимание было бы здорово!

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Вы правы, это одна из самых запутанных частей разработки Android.

Если при том же разрешении устройство A имеет среднюю плотность, а устройство B - высокую плотность, физически устройство A будет больше, чем устройство B.

Чтобы добавить к этому следующие цифры, допустим, что изображение mdpi bg было 100x100 пикселей, и мы пытались разместить прямоугольник от 10,10 до 15,15. Если мы определим смещение в пикселях, вот что мы получили бы:

устройство A (mdpi): bg изображение 100x100px, смещение 10px x 10px

устройство B (hdpi): изображение bg 150x150px, смещение 10px x 10px

Если вместо этого смещение указано в dp, результат будет:

устройство A (mdpi): bg изображение 100x100px, смещение 10px x 10px

устройство B (hdpi): изображение bg 150x150px, смещение 15px x 15px

Прелесть dp в том, что они масштабируются пропорционально другим вашим чертежам.

Обновление: в своем ответе на Aleadam вы можете обойти эту проблему, предоставляя различные художественные ресурсы в drawable, drawable-hdpi согласно инструкциям здесь.

0 голосов
/ 08 июня 2011

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

Если по какой-либо причине вы хотите вместо этого установить изображения на определенный размер, независимо от плотности и разрешения, используйте единицы измерения размера in (дюймы) или mm (миллиметры).

Редактировать : если они имеют одинаковый размер и разную плотность, то они имеют разное разрешение, и, следовательно, вы не можете использовать px, чтобы установить правильный размер. Вы все еще должны принять во внимание плотность, чтобы использовать то же количество экрана. Кроме того, с разными разрешениями у вас есть возможность создавать макеты для каждого, а именно: res/layout-normal, res/layout-large и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...