에서 생성 된 정수가 있습니다. android.graphics.Color
정수 값은 -16776961입니다.
이 값을 #RRGGBB 형식의 16 진 문자열로 변환하는 방법
간단히 말하면 : -16776961에서 # 0000FF를 출력하고 싶습니다.
에서 생성 된 정수가 있습니다. android.graphics.Color
정수 값은 -16776961입니다.
이 값을 #RRGGBB 형식의 16 진 문자열로 변환하는 방법
간단히 말하면 : -16776961에서 # 0000FF를 출력하고 싶습니다.
답변:
이 마스크를 사용하면 RRGGBB 만 얻을 수 있으며 % 06X는 0으로 채워진 16 진수 (항상 6 자 길이)를 제공합니다.
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
Integer.toHexString ()을 사용해보십시오
0x000000FF
, 또는 0xFF0000FF
당신이 알파를 제거합니다.
나는 대답을 찾았다 고 생각합니다.이 코드는 정수를 16 진수 문자열로 변환하고 알파를 제거합니다.
Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);
참고 확실 알파를 제거하면 아무 영향을 미치지 않을 것이라고 경우에만이 코드를 사용합니다.
0x00FFFFFF
이것을 통해 보내면 충돌 Color.parseColor
합니다.
여기 내가 한 일이 있습니다.
int color=//your color
Integer.toHexString(color).toUpperCase();//upercase with alpha
Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha
고마워 당신이 일을 했어
0x00FFFFFF
-> "FFFFFF"(알파 없음)에서 작동하지 않습니다 . 두 번째 변형은 0x00000FFF
-> "F"(결측 비트)에서 작동하지 않습니다 .
String.format("#%08X", intColor)
이 메소드 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());
}
를 사용 Integer.toHexString
하면과 같은 색상을 변환 할 때 누락 된 0으로 끝납니다 0xFF000123
. 여기에 안드로이드 특정 클래스 나 자바가 필요없는 내 kotlin 기반 솔루션이 있습니다. 따라서 다중 플랫폼 프로젝트에서도 사용할 수 있습니다.
fun Int.toRgbString(): String =
"#${red.toStringComponent()}${green.toStringComponent()}${blue.toStringComponent()}".toUpperCase()
fun Int.toArgbString(): String =
"#${alpha.toStringComponent()}${red.toStringComponent()}${green.toStringComponent()}${blue.toStringComponent()}".toUpperCase()
private fun Int.toStringComponent(): String =
this.toString(16).let { if (it.length == 1) "0${it}" else it }
inline val Int.alpha: Int
get() = (this shr 24) and 0xFF
inline val Int.red: Int
get() = (this shr 16) and 0xFF
inline val Int.green: Int
get() = (this shr 8) and 0xFF
inline val Int.blue: Int
get() = this and 0xFF