Работает ли `wrap_content` так же, как пиксели плотности?

Я прочитал рекомендации для Android, касающиеся разных размеров экрана, но все же у меня есть некоторые соображения.

Клиент дал мне изображение от PSD файл, который имеет определенное разрешение, которое подходит 1080 X 1920, Я просто использую wrap_content, и это идеально подходит для части экрана.

Я не пользуюсь DP определить его width-heightЕсли бы я использовал DP было бы скорректировать изображение в соответствии с screen sizes,

Мои вопросы

  1. Есть ли wrap_content работает так же, как Density Pixels?
  2. Это также отзывчиво, и изменяет изображение width-height по разным экранам?
  3. Если нет, то нужно ли использовать DP поддерживать разные размеры экрана?

Спасибо

1 ответ

Решение

Настройки wrap_content говорит вашему виду изменить размер до размеров, требуемых его содержимым. В случае вашего теста ваше изображение имеет разрешение 1080x1920, а разрешение экрана вашего устройства, вероятно, также составляет 1080x1920, поэтому идеально подходит. Так как вы устанавливаете ширину и высоту в wrap_contentAndroid просто пытается использовать столько места на экране, сколько ему необходимо, чтобы правильно отображать объем предоставленного контента. В этом случае, поскольку доступное пространство экрана соответствует размеру содержимого, оно просто идеально подходит.

Но что, если экран устройства не 1080x1920? В этом случае Android будет использовать только столько места, сколько сможет, но при этом попытаться уместить изображение в пределах доступного пространства экрана. Другими словами, система соответствующим образом уменьшит изображение, чтобы оно оказалось в контейнере, который вы ему предоставили. Но это может привести к неловким припадкам, если соотношение сторон не совпадает с изображением. Например, смотрите этот скриншот ниже:

Это изображение 1920x1080, но обратите внимание, что оно не совсем подходит. Это потому, что этот экран Nexus 7 1824x1200 при просмотре в альбомной ориентации. Кроме того, панель инструментов в верхней части экрана поглощает доступное пространство экрана, делая мою видимую область еще меньше и более неудобной формы. Так что, хотя система хотела бы, чтобы это изображение расширялось до левой и правой границ, это не может быть, потому что тогда это будет означать, что высота будет больше, чем видимое пространство. Так как я использовал wrap_content для отображения этого изображения система использует как можно больше вертикального пространства, и в результате изображение не совсем соответствует горизонтальному пространству.

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

Способ преодолеть это состоит в том, чтобы предоставить несколько версий ваших ресурсов и предоставить альтернативные файлы макетов для экранов разного размера и плотности. Как только вы это сделаете, все, что вы можете сделать, это проверить, протестировать и протестировать еще немного. Используйте эмуляторы для странной плотности экрана или устройств, которыми вы не владеете, просто чтобы убедиться, что вы получаете желаемый вид. В случае вашего изображения 1920x1080 оно отлично смотрится на этом одном устройстве, но как оно подойдет для большого планшета или крошечного телефона, который меньше, чем разрешение изображения? Это ситуации, которые вы должны учитывать в своем дизайне.

Я предлагаю вам прочитать эти ресурсы, так как они очень полезны при изучении способов решения проблем, возникающих в результате изменения размеров и плотности экрана:

http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/training/multiscreen/screensizes.html

Другие вопросы по тегам