¿Cómo convertir un entero de color a una cadena hexagonal en Android?

Tengo un número entero que se generó a partir de un android.graphics.Color

El entero tiene un valor de -16776961

¿Cómo convierto este valor en una cadena hexadecimal con el formato #RRGGBB?

En pocas palabras: me gustaría dar salida a # 0000FF desde -16776961

Nota: no quiero que la salida contenga un alfa y también he probado este ejemplo sin éxito

La máscara asegura que solo obtienes RRGGBB, y el% 06X te da hex de relleno cero (siempre 6 caracteres de largo):

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

Intente Integer.toHexString ()

Fuente: En Java, ¿cómo convierto una matriz de bytes a una cadena de dígitos hexadecimales mientras mantengo los ceros a la izquierda?

Creo que encontré la respuesta. Este código convierte el entero en una cadena hexadecimal y elimina el alfa.

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

Tenga en cuenta que solo use este código si está seguro de que eliminar el alfa no afectaría nada.

Aquí esta lo que hice

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

Gracias chicos, ustedes respondieron lo hicieron

Con este método Integer.toHexString , puede tener una excepción de color Desconocido para algunos colores al usar Color.parseColor.

Y con este método String.format (“#% 06X”, (0xFFFFFF & intColor)) , perderá el valor alfa.

Así que recomiendo este método:

 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()); } 

Valor entero del color ARGB a cadena hexadecimal:

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

Cadena hexadecimal a valor entero de color 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