Как преобразовать цветовое целое число в шестнадцатеричную строку в Android?
У меня есть целое число, которое было сгенерировано от android.graphics.Color
целое число имеет значение -16776961
Как преобразовать это значение в шестнадцатеричную строку с форматом #RRGGBB
проще говоря: я хотел бы вывести #0000FF из -16776961
Примечание: Я не хочу, чтобы вывод содержал альфа, и я также попробовал этот пример без какого-либо успеха
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