Я хочу преобразовать цвет int в массив байтов rgb. Я использую ColorPickerDialog (ColorPickerDialog).Java Android Studio Color Int to byte
Если я выберем цвет (скажем, синий), я получу значение Integer: -16775425.
Это соответствует 0xFF 00 06 FF в гексагоне.
Насколько мне известно, красный: 0x0, зеленый: 0x06, синий: 0xFF. Если я тестирую его в MS-Paint (0006FF), я получу синий цвет.
Если я пытаюсь Converte целого значения в массив байт с помощью следующего кода:
public byte [] getColorByte(int color1){
byte[] color = new byte[3];
color[2] = (byte) (color1 & 0xFF);
color[1] = (byte) ((color1 >> 8) & 0xFF);
color[0] = (byte) ((color1 >> 16) & 0xFF);
return color;
Я получаю массив байт с [0,6, -1].
Но если я хочу, чтобы установить фоновый цвет кнопки с функцией Color.rgb:
btn.setBackgroundColor(Color.rgb(getColorByte(color1)[0],getColorByte(int color1)[1],getColorByte(int color1)[2]));
Я только получить белые кнопки.
На мой взгляд, проблема в том, что 255 = FF! = -1. Это верно? Как я могу разбить целое число на значения RGB? (3 байтовый массив).
Спасибо !!!
FYI: Я знаю, что я могу изменить цвет фона с целым числом, но я хочу, чтобы получить массив RGB :-)
Попробуйте сохранить массив цветов как 'int []', а не 'byte []', чтобы вы не получили отрицательные числа. –
Спасибо, еще один вопрос: как я могу вернуться из [0,6, -1] байт-массива в -16775425 Int Value? Благодаря!! –