Как изменить альфа шестнадцатеричного значения ARGB, используя целочисленные значения в Java

1

Я работаю над проектом, который позволяет пользователю настраивать альфа цвета с помощью пользовательского слайдера. Ползунок возвращает целое число от 0 до 255, которое определяет новое альфа-значение, которое пользователь хочет использовать.

Проблема в том, что цвета должны быть в шестнадцатеричном виде, и я не знаю, как преобразовать целое число 0-255 в шестнадцатеричное целое число, которое может изменить исходное ARGB-шестнадцатеричное число. Я провел небольшое исследование (например, " Как изменить альфа предопределенного шестнадцатеричного цвета? "), Но ничего, что я нашел, не смог бы исправить мою проблему. Я думал об использовании класса Color из java AWT, однако он не имеет метода getRGBA().

Что я хочу:

    /** 
     * Original ARGB hexadecimal
     * Alpha: 255, Red: 238, Blue: 102, Green: 0 
    */
    int originalColor = 0xFFEE6600;

    /**
     * Creates a new hexadecimal ARGB color from origColor with its alpha
     * replaced with the user input (0-255)
     * EX: If userInputedAlpha = 145 than the new color would be 0x91EE6600
    */
    int newColor = changeAlpha(origColor, userInputedAlpha);

Все, что мне нужно, это метод changeAlpha, который изменяет параметр цвета alpha (который представляет собой шестнадцатеричное целое число) с введенным пользователем альфа (который является целым числом от 0 до 255)

Теги:
converter
hex
argb

1 ответ

8
Лучший ответ

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

int changeAlpha(int origColor, int userInputedAlpha) {
    origColor = origColor & 0x00ffffff; //drop the previous alpha value
    return (userInputedAlpha << 24) | origColor; //add the one the user inputted
}

Который можно легко свести к одному вкладышу:

return (origColor & 0x00ffffff) | (userInputedAlpha << 24);

Похоже, вы были обеспокоены тем фактом, что значения находятся в шестнадцатеричном или нет. Целое число - целое число, шестнадцатеричное - это всего лишь обозначение. Ведь там только 0 и 1 на наших компьютерах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню