it-swarm.com.ru

Как преобразовать целое число цвета в шестнадцатеричную строку в Android?

У меня есть целое число, которое было сгенерировано из Android.graphics.Color

Целое число имеет значение -16776961

Как мне преобразовать это значение в шестнадцатеричную строку в формате #RRGGBB

Проще говоря: я хотел бы вывести # 0000FF из -16776961

Примечание: Я не хочу, чтобы вывод содержал альфа, и я также попытался этот пример безуспешно

167
Bosah Chude

Маска гарантирует, что вы получите только RRGGBB, а% 06X дает вам гекс с нулевым отступом (всегда 6 символов в длину):

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

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

Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);

Примечание используйте этот код, только если вы уверены, что удаление альфы ни на что не повлияет.

18
Bosah Chude

Вот что я сделал

 int color=//your color
 Integer.toHexString(color).toUpperCase();//upercase with alpha
 Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha

Спасибо, ребята, вы ответы сделали вещь

7
Diljeet

С этим методом Integer.toHexString , вы можете иметь Неизвестное исключение цвета для некоторых цветов при использовании Color.parseColor.

И с помощью этого метода String.format ("#% 06X", (0xFFFFFF & intColor)) вы потеряете альфа-значение.

Поэтому я рекомендую этот метод:

public static String ColorToHex(int color) {
        int alpha = Android.graphics.Color.alpha(color);
        int blue = Android.graphics.Color.blue(color);
        int green = Android.graphics.Color.green(color);
        int red = Android.graphics.Color.red(color);

        String alphaHex = To00Hex(alpha);
        String blueHex = To00Hex(blue);
        String greenHex = To00Hex(green);
        String redHex = To00Hex(red);

        // hexBinary value: aabbggrr
        StringBuilder str = new StringBuilder("#");
        str.append(alphaHex);
        str.append(blueHex);
        str.append(greenHex);
        str.append(redHex );

        return str.toString();
    }

    private static String To00Hex(int value) {
        String hex = "00".concat(Integer.toHexString(value));
        return hex.substring(hex.length()-2, hex.length());
    }
3
Simon

Целочисленное значение цвета ARGB в шестнадцатеричной строке:

String hex = Integer.toHexString(color); // example for green color FF00FF00

Шестнадцатеричная строка в целочисленное значение цвета ARGB:

int color = (Integer.parseInt( hex.substring( 0,2 ), 16) << 24) + Integer.parseInt( hex.substring( 2 ), 16);
1
Style-7
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color
0
chundk