J'ai un entier qui a été généré à partir d'un Android.graphics.Color
L'entier a une valeur de -16776961
Comment convertir cette valeur en chaîne hexadécimale au format #RRGGBB
Tout simplement: je voudrais sortir # 0000FF de -16776961
Note: Je ne veux pas que la sortie contienne un alpha et j'ai aussi essayé cet exemple sans succès
Le masque garantit que vous n’obtenez que RRGGBB, et le% 06X vous donne un hexagone rempli de zéros (toujours composé de 6 caractères):
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
Essayez Integer.toHexString ()
Je crois que j'ai trouvé la réponse, ce code convertit l'entier en une chaîne hexagonale et supprime l'alpha.
Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);
Remarque utilisez ce code uniquement si vous êtes certain que la suppression de l'alpha n'affectera en rien.
Voici ce que j'ai fait
int color=//your color
Integer.toHexString(color).toUpperCase();//upercase with alpha
Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha
Merci les gars vous répondez a fait la chose
Avec cette méthode Integer.toHexString , vous pouvez avoir une exception de couleur inconnue pour certaines couleurs lorsque vous utilisez Color.parseColor.
Et avec cette méthode String.format ("#% 06X", (0xFFFFFF & intColor)) , vous perdrez une valeur alpha.
Je recommande donc cette méthode:
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());
}
Valeur entière de la couleur ARVB en chaîne hexadécimale:
String hex = Integer.toHexString(color); // example for green color FF00FF00
Chaîne hexadécimale en valeur entière de la couleur 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