Как плотность пикселей соответствует размеру экрана?

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

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

В ответах обычно указываются разные разрешения в пикселях для каждой корзины плотности.

Например:

xxxhdpi: 1280x1920 px
xxhdpi: 960x1600 px
xhdpi: 640x960 px
hdpi: 480x800 px
mdpi: 320x480 px
ldpi: 240x320 px

Источник: Android: размер фонового изображения (в пикселях), который Поддержка всех устройств

Именно такой список я и искал. Единственная проблема в том, что это не имеет смысла для меня.

Группировка изображений по плотности кажется правильной для изображений, которые должны отображаться одинакового размера при разной плотности (например, чтобы значок всегда имел размер 1 x 1 см, независимо от плотности экрана).


Однако, когда дело доходит до полноэкранных изображений, я хочу выбирать изображение не на основе плотности пикселей дисплея, а на основе его фактического размера в пикселях! (Или я?)

Допустим, у меня есть 3 устройства (вымышленные значения):

  • 2-дюймовые часы с дисплеем 500 x 500 пикселей (~hdpi)
  • 4-дюймовый телефон с дисплеем 1000 x 1000 пикселей (~hdpi)
  • 10-дюймовый планшет с дисплеем 1000 x 1000 пикселей (~mdpi)

И изображение размером 1000 x 1000 пикселей, которое я хочу отображать в полноэкранном режиме на всех устройствах.

Очевидно, что 2-дюймовые и 4-дюймовые устройства имеют более высокую плотность пикселей, поэтому они получают изображение из hdpi-сегмента, в то время как 10-дюймовые устройства получают его из mdpi-сегмента. Это означает, что 2-дюймовые и 4-дюймовые- устройства используют тот же размер изображения, в то время как 10-дюймовое устройство использует меньший размер.

Но моя интуиция подсказывает мне, что я должен использовать уменьшенное изображение для 2-дюймового устройства (недостаточно пикселей для отображения изображения 1000 x 1000 пикселей) и полное разрешение для 4-дюймовых и 10-дюймовых устройств (поскольку оба они иметь достаточно пикселей, чтобы извлечь выгоду из полного разрешения 1000 x 1000 пикселей).Мне кажется, что ведра плотности не подходят для достижения этого.


Я предполагаю, что не все ответы неверны, и что это просто мой мыслительный процесс, который ошибочен. Я просто не могу понять, в какой момент. Любая помощь приветствуется!

Пс. Я не слишком беспокоюсь о точных значениях разрешения или соотношениях сторон. Некоторое кадрирование/растяжение совершенно нормально. Мне просто интересно, как заставить Android выбрать изображение с наиболее подходящим разрешением, когда вы хотите отобразить его на весь экран. Ведра плотности кажутся мне неправильным подходом.


person James Abuser    schedule 28.09.2018    source источник


Ответы (1)


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

По сути, ответа на ваш вопрос нет.

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

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

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

Любая попытка создать «полноэкранный» png, который работает на каждом устройстве Android, обречена на провал (по крайней мере, в некоторых отношениях) по крайней мере на некоторых устройствах. Вы можете создавать векторные рисунки, которые масштабируются до любого размера экрана, но вам все равно придется смириться с тем фактом, что существуют экраны с разными соотношениями сторон.

person Ben P.    schedule 28.09.2018
comment
Спасибо за Ваш ответ. Под поддержкой всех устройств я имел в виду разрешение. Я согласен с некоторым масштабированием/обрезкой, когда соотношение сторон неправильное. И таким образом я чувствую, что ведра плотности не помогают. Я подумал, может быть, есть еще одна категория ведра, которая подойдет для этой работы. - person James Abuser; 28.09.2018
comment
@JamesAbuser Вы можете комбинировать квалификатор ресурса swXXXdp (наименьшая ширина) с квалификаторами плотности (например, drawable-mdpi + drawable-sw600dp-mdpi + drawable-sw720dp-mdpi (а также ldpi/hdpi/etc версии этих трех)) для поддержки телефонов + 7 планшетов + 10 планшетов. Это позволяет создавать изображения трех разных размеров (с разной плотностью), чтобы свести к минимуму масштабирование/обрезку. - person Ben P.; 28.09.2018