Преобразование целочисленного значения цвета в RGB

Я пытаюсь изменить стороннее программное обеспечение. Я хочу использовать цвет, который возвращает некоторые методы (которые я не могу изменить) как целое. Тем не менее, я хотел бы использовать формат RGB, например # FF00FF. Как я могу сделать преобразование?

Вот пример HTML http://www.shodor.org/stella2java/rgbint.html Я хотел бы архивировать то же самое в Java, на Android.

Ответы

Ответ 1

Используйте этот

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));

Мы знаем, что значение цвета в HEX равно 6. Итак, вы видите здесь 6. % 06X соответствует результату, исходящему из (0xFFFFFF и intColor), и если длина меньше 6, результат составляет 6, добавляя ZERO к левой стороне результата. И вы видите #, поэтому этот # char добавляется к результату и, наконец, вы получаете значение HEX COLOR.

Ответ 2

То, что я считаю самым простым и лучшим решением для меня, - это прямое использование класса Color следующим образом:

int red = Color.red(intColor);
int green = Color.green(intColor);
int blue = Color.blue(intColor);

Таким образом, я мог уже иметь дело с целыми значениями без необходимости обрабатывать строки. Если, с другой стороны, строка, представляющая цвет rgb, является тем, что вам нужно, ответ Pankaj Kumar является лучшим. Надеюсь, что это кому-то полезно.

Ответ 3

RGB использует шестнадцатеричный формат десятичного числа. если у вас есть целочисленное значение, преобразуйте его в hexa,.

Ответ 4

Поскольку SDK 26 вы можете просто использовать

Color c = Color.valueOf(colorInt);

кроме того, не представляется возможным создать экземпляр Color из произвольного argb. В базовом коде используется частный конструктор:

/**
 * Creates a new <code>Color</code> instance from an ARGB color int.
 * The resulting color is in the {@link ColorSpace.Named#SRGB sRGB}
 * color space.
 *
 * @param color The ARGB color int to create a <code>Color</code> from
 * @return A non-null instance of {@link Color}
 */
@NonNull
public static Color valueOf(@ColorInt int color) {
    float r = ((color >> 16) & 0xff) / 255.0f;
    float g = ((color >>  8) & 0xff) / 255.0f;
    float b = ((color      ) & 0xff) / 255.0f;
    float a = ((color >> 24) & 0xff) / 255.0f;
    return new Color(r, g, b, a, ColorSpace.get(ColorSpace.Named.SRGB));
}