Подтвердить что ты не робот

Как конвертировать ppi в dpi для изображений Android?

Я начал делать графику для своего приложения для Android с помощью Adobe Photoshop. Но я не могу продолжить, так как разрешение в Photoshop задано в пикселях на дюйм, где, как говорится в официальной документации Google, Android потребует изображения, установленные в dpi. Я искал в Интернете для преобразования между ними, но никогда не получал никакой правильной формулы.

Я знаю, что документация на Android описывает отношение как px = dp*dpi/160. Но моя проблема в том, что если я знаю dpi, где я получу значение dp, которое будет использоваться в этом расчете? Или существует ли какое-либо предположение о значении dp? Я смущен.

4b9b3361

Ответ 1

Dp - независимые пиксели плотности и используются для обобщения количества пикселей на экране. Это обобщенные данные, взятые из http://developer.android.com/guide/practices/screens_support.html

  • xlarge экраны не менее 960dp x 720dp
  • большие экраны не менее 640dp x 480dp
  • обычные экраны не менее 470dp x 320dp
  • маленькие экраны не менее 426dp x 320dp

Обобщенные значения Dpi для экранов:

  • ldpi Ресурсы для экранов с низкой плотностью (ldpi) (~ 120 точек на дюйм)
  • mdpi Ресурсы для экранов средней плотности (mdpi) (~ 160 точек на дюйм). (Это базовая плотность.)
  • hdpi Ресурсы для экранов высокой плотности (hdpi) (~ 240 точек на дюйм).
  • xhdpi Ресурсы для экранов с высокой плотностью (xhdpi) (~ 320 точек на дюйм).

Поэтому обобщенный размер ваших ресурсов (при условии, что они полны):

  • ldpi
    • Вертикальный = 426 * 120/160 = 319.5px
    • Горизонтальный = 320 * 120/160 = 240px
  • MDPI
    • Вертикальный = 470 * 160/160 = 470 пикселей
    • Горизонтальный = 320 * 160/160 = 320 пикселей
  • ИПЧР
    • Вертикальный = 640 * 240/160 = 960px
    • Горизонтальный = 480 * 240/160 = 720px

Изменить - добавление xhdpi, поскольку они становятся все более популярными

  • xhdpi
    • Вертикальный = 960 * 320/160 = 1920 пикселей
    • Горизонтальное = 720 * 320/160 = 1440px

Эти значения должны быть пригодны для большинства экранов xhdpi, таких как телевизоры и Nexus 4, включая Nexus 10 (при условии, что они не создают новую категорию для этого, так как это 25k x 16k, не знаю, как я haven пока у меня нет руки).

/Edit


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

Ответ 2

Я не согласен с ответом Майкла Аллена, потому что результирующие разрешения для ldpi, mdpi, hdpi и xdpi не удовлетворяют коэффициентам масштабирования 3: 4: 6: 8 для альтернативных растровых изображений, упомянутых в документах google здесь под заголовком ' Альтернативные чертежи

http://developer.android.com/guide/practices/screens_support.html#testing

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

470 x 320 dp, используя формулу из той же документации, мы вычисляем полное разрешение экрана для базового размера экрана

px = dp * (dpi/160); для базовой линии px = dp * (160/160) = dp * 1 поэтому px = dp. Это означает полный размер экрана для нашей базовой конфигурации. в пикселях будет

470 X 320 px (mdpi)

теперь, чтобы следить за коэффициентами масштабирования 3: 4: 6: 8 для альтернативных размеров drawables для ldpi, hdpi и xhdpi, нам нужно получить значения единицы из mdpi. т.е.

470/4 = 117,5

320/4 = 80

делятся на 4, потому что коэффициент масштабирования для mdpi равен 4, коэффициенты масштабирования для ldpi, hdpi и xhdpi равны 3,6 и 8 соответственно. теперь просто умножьте результаты блока 117.5 и 80 с этими коэффициентами масштабирования

ldpi

117,5 * 3 = 352,5

80 * 3 = 240

mdpi

117,5 * 4 = 470

80 * 4 = 320

hdpi

117,5 * 6 = 705

80 * 6 = 480

xhdpi

117,5 * 8 = 940

80 * 8 = 640

Эти размеры теперь находятся в идеальном соотношении масштабирования 3: 4: 6: 8.

Ответ 3

Да, Dp (независимые пиксели плотности) - все, о чем будет заботиться Photoshop. Он не должен учитывать, какова будет плотность пикселей. Этот образ супер большого количества пикселей может быть помещен в супер маленькую кнопку пользовательского интерфейса высокой четкости для всего, что ей нужно. Или у вас может быть несколько пикселей для ретро-плаката A0 Tetris. Это потому, что они могут масштабироваться. Мало пикселей масштабируется для большой площади, и многие пиксели уменьшаются для небольшой области на экране.

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

Для интуиции этот сайт помог мне ссылку на страницу блога:

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

(платформа делает масштабирование - обработка отношения плотности выполняется Android, а не вы), и это очень важно для пользовательского интерфейса:

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

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

Ответ 4

Так как разрешение в Photoshop задано в пикселях на дюйм, где, как говорится в официальной документации Google, Android потребует установки изображений в формате dpi.

Ответ 5

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