Согласно DOCS этот метод не возвращает беззнаковое десятичное Int ... но шестнадцатеричное значение:
INT GetColor (контекст Context, внутр идентификатор)
Возвращает одно значение цвета в виде 0xAARRGGBB ,
Полученный номер в формате Alpha/Red/Green/Blue.
Поскольку ваш цвет является полным непрозрачным, getColor()
автоматически возвращает FF
в качестве альфа для вашего цвета. Так, в самом деле, вы цвет: FF1FAB06
Они все же
Все номера являются представлением одного и того же двоичного числа.
FF1FAB06
является шестнадцатеричным представлением следующего двоичного числа:
ALPHA RED GREEN BLUE
--------- --------- --------- ---------
1111 1111 0001 1111 1010 1011 0000 0110
F F 1 F A B 0 1
-14701818
является десятичное представление следующего двоичного числа:
ALPHA RED GREEN BLUE
--------- --------- --------- ---------
1111 1111 0001 1111 1010 1011 0000 0110
F F 1 F A B 0 1
Обратите внимание, что 32-й значащий бит равен 1. Таким образом, это число должно считаться отрицательным значением в подписанной системе/переменной.
Вот почему вы получите отрицательное число от getColor()
2075398
, однако, следующее двоичное число:
ALPHA RED GREEN BLUE
--------- --------- --------- ---------
0000 0000 0001 1111 1010 1011 0000 0110
0 0 1 F A B 0 1
Таким образом, первый байт 00000000
. Так, Альфа 00
и другими словами, 2075398
является полный прозрачный цвет
ANDROID
В случае Android, setTextColor()
и getColor()
ожидают шестнадцатеричные значения в формате 0xAARRGGBB
.. Таким образом, вы должны держать что при получении/настройке цвета ...
Они также ожидают атрибут альфа (и не только красный/зеленый/синий). Так, полностью непрозрачный цвет, у вас есть 0xFF******
шестнадцатеричное значение, которое начинается с FF фактически является отрицательным десятичным значением для подписанных ИНТ представлений ...
На самом деле, все это просто представление а двоичный номер в памяти
Таким образом, в Android, если вы хотите установить цвет, вы должны сохранить отрицательное значение с -14701818, это десятичное представление шестнадцатеричного FF1FAB06 (при использовании подписанного int, который имеет место).
Если по какой-либо причине вам необходимо отправить десятичное положительное значение на сервер, используйте это положительное значение только для своего сервера и не разделяйте цвет Android. В противном случае вы должны постоянно конвертировать его в нужную систему (Android/iOS) каждый раз, когда хотите их использовать.
IOS
Я не знаю, как IOS ручка цвет .. Но, вероятно, вы должны тайным значение в формат, который может работать с IOS.
Почему бы вам не преобразовать значения hex в значения rgb? – Pztar