Дизайн Photoshop от px до dp

У меня есть окончательный дизайн приложения, сделанный в Photoshop, где все измеряется в PX. Теперь я понимаю, что приложения для Android используют DP для размеров шрифта и других вещей.

Есть ли способ конвертировать PX в DP?

Ответ 1

На более практичной ноте у вас есть несколько вариантов увеличения работы и верности:

  • Ресурсы масштабируются для 160 точек на дюйм, помещают их в каталог res/drawable и позволяют ОС масштабировать их, чтобы смотреть прямо на устройство.

  • Сделайте две копии ваших ресурсов: один на 160 точек на дюйм в вашем res/drawable и один на 240 точек на дюйм в вашем каталоге res/drawable-hdpi. Пусть шкала ОС для точного устройства, начиная с довольно близкого числа.

  • Решите, что вы не хотите масштабирования и иметь необработанные пиксели, поэтому поместите свои ресурсы в каталог res/drawable-nodpi. Это означает, что на 320x480 (пиксельном) графике может быть 2 дюйма на 3 дюйма на одном телефоне, но только на 1 1/3 дюйма на 2 дюйма на другом экране.

  • Укажите точную стратегию масштабирования для вашей работы с помощью инструмента draw9patch. Это может быть очень полезно для сохранения углов ящиков от получения "зубцов" от масштабирования и для обеспечения полноэкранной графики с различными пропорциями.

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

О, и в качестве получения укажите sp для ваших шрифтов, а не dp или pt. 10-точечным шрифтом будет шрифт 22 sp [= 10 * (160/72) или = количество точек раз 2.222]. sp масштабируются с пользовательскими настройками для небольших, средних или больших шрифтов.

Ответ 2

Из этот список единиц измерения, поддерживаемых Android, здесь описание DP:

Не зависящие от плотности пиксели - абстрактный блок, основанный на физической плотности экрана. Эти единицы относятся к экрану с разрешением 160 точек на дюйм, поэтому один пиксель составляет один пиксель на экране с разрешением 160 точек на дюйм. Отношение dp-to-pixel будет меняться с плотностью экрана, но не обязательно в прямой пропорции. Примечание. Компилятор принимает как "dip", так и "dp", хотя "dp" более соответствует "sp".

Это означает, что "преобразование" между пикселями и DP не будет согласованным - на некоторых устройствах отношение может быть 1DP = 160 пикселей, но теоретически это может быть что угодно. Это хорошо и хорошо, когда вы устанавливаете ширину кнопки, например, 100dp (так как она будет отображаться динамически), но это создает проблему, когда у вас есть изображения, которые должны иметь фиксированный размер.

Прочитайте эту страницу на " Поддержка нескольких экранов" - у Android есть что-то, называемое классификаторы каталогов ресурсов, которые позволяют создавать размерные и графические версии ваших ресурсов изображения. Например, для экранов с низкой плотностью вы можете создать меньшую версию своего изображения и поместить ее в каталог drawable-ldpi (или drawable-hdpi для экранов с высокой плотностью).


tl; dr Вы не можете практически "конвертировать из PX в DP" (так как соотношение не фиксировано), но вы можете создавать несколько версий своих изображений и сообщать Android, которые должны использоваться с квалификаторы каталога ресурсов.

Ответ 3

A пиксель - это PX, а DP или DIP - независимые от устройства пиксели. Я не думаю, что вам нужно их преобразовать. Но вы можете использовать масштабируемые 9patch-изображения, используя инструмент draw9patch из инструментов Android.

Ответ 4

У меня такая же проблема, но теперь я получил решение.

Почему вы не используете онлайн-конвертер, чтобы узнать, какие dp или px у вас есть для разного разрешения устройства Android?

Смотрите эту ссылку: эта ссылка, которая мне очень помогает, а также помогает вам.

Наслаждайтесь кодированием.