Как преобразовать целое число цвета в шестнадцатеричную строку в Android? - PullRequest
175 голосов
/ 30 июня 2011

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

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

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

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

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

Ответы [ 7 ]

426 голосов
/ 30 июня 2011

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

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
51 голосов
/ 30 июня 2011
20 голосов
/ 01 июля 2011

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

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

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

9 голосов
/ 17 декабря 2012

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

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

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

4 голосов
/ 04 января 2018

Целочисленное значение цвета 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);
4 голосов
/ 28 сентября 2017

При использовании этого метода 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());
    }
0 голосов
/ 15 января 2017
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color
...