Android.graphics.Color
から生成された整数があります
整数の値は-16776961です
この値を#RRGGBB形式の16進文字列に変換するにはどうすればよいですか
簡単に言えば、-16776961から#0000FFを出力したい
注:出力にアルファを含めたくないので、 この例 も成功しませんでした
マスクは、RRGGBBのみを取得し、%06Xはゼロが埋め込まれた16進数(常に6文字)を提供します。
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
Integer.toHexString()を試してください
私は答えを見つけたと信じています、このコードは整数を16進文字列に変換し、アルファを削除します。
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
答えてくれた皆さんありがとう
ARGBカラーの16進文字列への整数値:
String hex = Integer.toHexString(color); // example for green color FF00FF00
16進数文字列からARGBカラーの整数値:
int color = (Integer.parseInt( hex.substring( 0,2 ), 16) << 24) + Integer.parseInt( hex.substring( 2 ), 16);
このメソッド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());
}
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color