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



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



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



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



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



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

765   7  

7 ответов:

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

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

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

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

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

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

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

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

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

и с этим методом строку.формат ("#%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());
    }

целочисленное значение цвета 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);
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color

Comments

    Ничего не найдено.