Android: цветовые коды

Я реализую палитру цветов, используя библиотеку AmbilWarna, с включенной альфа-версией.

Пример кода выглядит следующим образом: https://code.google.com/p/android-color-picker/

В то время как цветовой код возвращается,

  • ярко-зеленый со средней прозрачностью: цветовой код = 1980104448
  • ярко-желтый со средней прозрачностью: код цвета = 1912340224
  • ярко-красный без прозрачности: код цвета = -65536 (отрицательный?)
  • белый без прозрачности: код цвета = -1
  • белый со 100% прозрачностью: код цвета = 16777215

Вопрос:

Я хотел бы использовать этот возвращенный код цвета, чтобы установить цвет фона кнопок. Как можно интерпретировать эти цветовые коды? И почему некоторые из них отрицательны? Нужно ли конвертировать в RGB коды?

1 ответ

Решение

Все значения в десятичном виде.

white with 100% transparency: color code = 16777215

16777215(10) = FFFFFF(16)

Вам не нужно конвертировать это, вы можете установить это напрямую.

myView.setBackgroundColor(value);

Если у вас есть значение HEX, например, "#FFFFFF", мы должны установить как

myView.setBackgroundColor (Color.parseColor ("#FFFFFF"));

Color.parseColor ("#FFFFFF"); называется, который возвращает Inturn int

Приведенный ниже метод скопирован с android.graphics.Color.java

/**
 * Parse the color string, and return the corresponding color-int.
 * If the string cannot be parsed, throws an IllegalArgumentException
 * exception. Supported formats are:
 * #RRGGBB
 * #AARRGGBB
 * 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta',
 * 'yellow', 'lightgray', 'darkgray', 'grey', 'lightgrey', 'darkgrey',
 * 'aqua', 'fuschia', 'lime', 'maroon', 'navy', 'olive', 'purple',
 * 'silver', 'teal'
 */
public static int parseColor(String colorString) {
    if (colorString.charAt(0) == '#') {
        // Use a long to avoid rollovers on #ffXXXXXX
        long color = Long.parseLong(colorString.substring(1), 16);
        if (colorString.length() == 7) {
            // Set the alpha value
            color |= 0x00000000ff000000;
        } else if (colorString.length() != 9) {
            throw new IllegalArgumentException("Unknown color");
        }
        return (int)color;
    } else {
        Integer color = sColorNameMap.get(colorString.toLowerCase(Locale.ROOT));
        if (color != null) {
            return color;
        }
    }
    throw new IllegalArgumentException("Unknown color");
}
Другие вопросы по тегам