Android-рендеринг оттенка синего не так на некоторых устройствах
Я запускаю приложение на разных устройствах, а на двух определенный оттенок синего выглядит неправильно. Пожалуйста, смотрите прикрепленное изображение. Есть идеи, почему это так? Если я заменю цвет на другой без каких-либо изменений, все выглядит хорошо.
ПРИМЕЧАНИЕ РЕДАКТОРА: Оригинальный постер утверждает, что в ресурсах проекта есть один файл colors.xml, и цвет определяется один раз. Цвет определяется именем (@color/pbr) и имеет значение #447AD4. Макет для приведенных выше снимков экрана использует одно и то же имя ресурса, но отображает его разными цветами.
6 ответов
Так что это похоже на проблему с tintMode. Причина, по которой цвета выглядят по-разному, заключается в прозрачности. По умолчанию Drawables в Android имеет tintMode SRC_IN, то есть они сохраняют свой цвет, но используют альфа из того, что находится под ними во время рендеринга. Судя по всему, под голубыми видны виды, которые не являются на 100% непрозрачными.
Чтобы решить эту проблему, вы можете явно установить для tintMode что-то вроде SRC_OVER, что сохранит альфа, которую вы установили, нетронутой. Другой вариант - вместо того, чтобы задавать цвет фона, установите для него Shape Drawable со сплошной заливкой. Это обеспечит непрозрачность вида и будет иметь постоянный цвет.
Используя paint.net, я мог убедиться, что цвет текста "Поиск еды" одинаков на всех устройствах, которые исключают глобальный оттенок устройства или ошибку в процессе поиска снимков экрана.
- Для тех, кто хочет это проверить: позаботьтесь о том, чтобы вы проверили цвет в середине буквы, например, в центре креста f, чтобы вы не получали сглаживающие цвета.
- ОБНОВЛЕНИЕ: это указывает на то, что различные цвета области не являются проблемой обработки цвета на глобальном уровне устройства, поскольку, по крайней мере, цвет текста одинаков
Убедитесь, что вы оба не указали
- Различные файлы макетов
- Разные цвета
для разных версий 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 получает красный и зеленый или синий и зеленый подпиксели. Красный и синий больше зеленого, чтобы сбалансировать яркость. Поскольку в вашем телефоне зеленых субпикселей в два раза больше, чем красного и синего, на этих устройствах ваш выбор цвета, вероятно, не соответствует действительности.
РЕШЕНИЕ
Все устройства выбирают цвета с различной интенсивностью. Вы не можете ничего с этим поделать. Его аппаратное обеспечение, которое отображает изображения и цвета в нем. Если вы хотите согласованности между всеми устройствами, вы должны откалибровать свой монитор.