Android-рендеринг оттенка синего не так на некоторых устройствах

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

ПРИМЕЧАНИЕ РЕДАКТОРА: Оригинальный постер утверждает, что в ресурсах проекта есть один файл colors.xml, и цвет определяется один раз. Цвет определяется именем (@color/pbr) и имеет значение #447AD4. Макет для приведенных выше снимков экрана использует одно и то же имя ресурса, но отображает его разными цветами.

6 ответов

Решение

Так что это похоже на проблему с tintMode. Причина, по которой цвета выглядят по-разному, заключается в прозрачности. По умолчанию Drawables в Android имеет tintMode SRC_IN, то есть они сохраняют свой цвет, но используют альфа из того, что находится под ними во время рендеринга. Судя по всему, под голубыми видны виды, которые не являются на 100% непрозрачными.

Чтобы решить эту проблему, вы можете явно установить для tintMode что-то вроде SRC_OVER, что сохранит альфа, которую вы установили, нетронутой. Другой вариант - вместо того, чтобы задавать цвет фона, установите для него Shape Drawable со сплошной заливкой. Это обеспечит непрозрачность вида и будет иметь постоянный цвет.

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

  • Для тех, кто хочет это проверить: позаботьтесь о том, чтобы вы проверили цвет в середине буквы, например, в центре креста f, чтобы вы не получали сглаживающие цвета.
  • ОБНОВЛЕНИЕ: это указывает на то, что различные цвета области не являются проблемой обработки цвета на глобальном уровне устройства, поскольку, по крайней мере, цвет текста одинаков

Убедитесь, что вы оба не указали

  1. Различные файлы макетов
  2. Разные цвета

для разных версий Android / плотности экрана / размеров экрана

Вы могли настроить тему в

RES / значения /style.xml

Также настроить аналогично в

res/values-v11/style.xml и res / values-v14 /style.xml

(Создайте values-v11 а также values-v14 папки, если их там еще нет, и скопируйте и вставьте в них свой style.xml. Если папки и style.xml внутри них уже есть, добавьте свои вещи и убедитесь, что вы не удалили ничего важного, переписав файл.)

Источник

Проверяли ли вы, что ресурс, на который вы ссылаетесь (цвет), не предоставляется несколько раз для разных разрешений экрана с помощью квалификаторов конфигурации?

Например, убедитесь, что у вас нет нескольких colors.xml или styles.xml в папке values-mdpi или values-xxhdpi. Если на него ссылаются более чем в одной папке, это ваша проблема.

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

Это может быть проблема конкретного устройства с цветом #447AD4. Различные производители смартфонов используют разные типы экранов в своем устройстве. Так что, возможно, это проблема конкретного устройства, я думаю.


ПРИЧИНА


Для этого нет "серебряной пули", но одной из возможных причин могут быть водители. Некоторые производители чипсетов проделали особенно плохую работу по обновлению своих графических драйверов, что делает цвета в приложениях, играх и любом графическом контенте несовместимыми для всех телефонов. Разработчики могут столкнуться с совершенно разными цветовыми схемами на разных устройствах Android, ни одно из которых не соответствует их предназначению.

На экранах Samsung используются пиксели различной формы.

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

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


РЕШЕНИЕ


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

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