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

Цвет Blue Holo выглядит зеленым на устройстве

У меня возникла странная проблема, когда я устанавливаю фон TextView на @android:color/holo_blue_bright, ожидая, что он будет ярко-синим, только чтобы обнаружить, что на нем что-то ярко-зеленое.

XML

<TextView
    android:id="@+id/tv_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@drawable/chat_bubble"
    android:maxWidth="300dp"
    android:padding="5dp"
    android:singleLine="false"
    android:textSize="16sp" />

@вытяжка/chat_bubble

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/chat_bubble_background" />

    <corners android:radius="5dp" />
</shape>

colors.xml(только соответствующая строка)

<color name="chat_bubble_background">@android:color/holo_blue_bright</color>

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

enter image description here

Я подумал, может быть, это потому, что мое устройство отображает цвета по-другому или что-то в этом роде, поэтому я попробовал еще несколько голосных цветов, но все они выглядят точно так, как они должны

@android: color/holo_green_light дает

enter image description here

@android: color/holo_green_dark дает

enter image description here

Даже @android: color/holo_orange_light и @android: color/holo_purple выглядят ОК

enter image description here

enter image description here

за исключением синих:

@android: color/holo_blue_light дает

enter image description here

@android: color/holo_blue_dark дает

enter image description here

Все синие отображаются как похожие, но не совсем одинаковые оттенки зеленого. Также не тот же оттенок зеленого цвета, что и holo_green_light или holo_green_dark.

Я думал, что это? Все выглядит хорошо, но не синее? и пошел проверять, что такое HEX holo_blue_bright, и я нашел его здесь (это #FF00DDFF).
Поэтому я попытался использовать эти значения HEX напрямую, вместо того, чтобы использовать предопределенный голографический цвет.

enter image description here

Студия Android (v1.2) говорит мне, что они точно такие же, как я ожидал.

Однако, когда я изменил

<solid android:color="@color/chat_bubble_background" />

to

<solid android:color="@color/chat_bubble_background2" />

использовать #FF00DDFF как цвет, я получил это

enter image description here

Именно это я и ожидал увидеть, когда я использовал holo_blue_bright! Что должно иметь смысл, учитывая, что они одного цвета.

Я в тупике. Что здесь происходит, чего мне не хватает? Почему 2, предположительно, одинаковые цветовые коды дают разные результаты, и почему все остальные холодные цвета выглядят нормально?


Информация об устройстве:

OnePlus One
Модель A0001
Запуск Cyanogen OS v11.0-XNPH05Q/kernel 3.4.0-cyanogenmod-gc73a4ec build 04
Запуск Android 4.4.4

4b9b3361

Ответ 1

Шестнадцатеричный код для holo_blue_bright в стандартном Android 4.4.4 - ff00ddff (Источник).

Зеленый цвет, который вы получаете, на самом деле является значением user_icon_6, которое описывается как "светло-зеленый 500" (Источник).

Похоже, что изготовитель вашего устройства настроил цветовую палитру, заменив значения по умолчанию другими цветами (намеренно или нет). Это означает, что holo_blue_bright определяется как это в вашей настроенной версии Android:

<color name="holo_blue_bright">#ff8bc34a</color>


Теперь, когда вы предоставили информацию об устройстве, я искал источник CM11. Определенный цвет ff00ddff, , который является правильным. Однако OnePlus разрабатывает собственную версию Cyanogen OS, поэтому они могут изменить значения цветов. К сожалению, я не смог найти исходный код для CM11-XNPH05Q, поэтому я могу только догадываться.

Я предлагаю вам напрямую обратиться к OnePlus об этой проблеме.

Ответ 2

Из вашего комментария выше

@CSmith Это дает мне ff8bc34a, который выглядит как зеленый, который я вижу. Почему Android Studio скажет мне, что это ff00ddff?

довольно ясно, что производитель изменил цвет на устройстве. Android Studio дает вам значение цвета из официальных ресурсов Android в SDK.

Попробуйте приложение в эмуляторе, например. Nexus 5. Я уверен, что там будет правильный цвет.