[java] 16 진수 색상 값 (#ffffff)을 정수 값으로 변환

서버에서 16 진수 색상 값을 받고 있습니다 (이 형식으로 #xxxxxx, 예 #000000를 들어 검은 색).

이것을 정수 값으로 어떻게 변환합니까?

나는 Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))훨씬 더 현명한 0x000000결과 를 얻으 려고 노력 했지만 이것은 int여기에 다른 제안 으로 해석 되지 않았습니다 .

오류가 발생합니다. 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer

나는 그들의 setBackgroundColor(int color)기능을 위해 Android SDK를 사용하고 있는데, 이것은 당신이 짐작했듯이 정수 색상 값을 취합니다.

이것은이 질문의 반대입니다 : Android에서 색상 정수를 16 진수 문자열로 변환하는 방법?



답변

진짜 대답은 다음을 사용하는 것입니다.

Color.parseColor(myPassedColor)안드로이드, myPassedColor있는 hex같은 값 #000이나 #000000또는 #00000000.

그러나,이 함수는 속기 16 진수 값을 지원하지 않는 등을 #000.


답변

대답은 정말 간단합니다 .Android에서 16 진수 색상을 int로 변환하려면 다음과 같이 Android Color 클래스를 사용하십시오.

이것은 밝은 회색 색상입니다

Color.parseColor("#a8a8a8");

그게 다이고 결과를 얻을 수 있습니다.


답변

Integer.parseInt(myString.replaceFirst("#", ""), 16)


답변

나는 내가 어떤 색을 발견 한 것과 같은 문제가 있는데 그것을 #AAAAAA안드로이드가 사용할 수있는 형태로 변환하고 싶다. 나는 당신 0xFFAAAAAA이 안드로이드가 자동으로 색상을 알 수 있도록 사용할 수 있음을 발견했습니다 . 첫 번째 FFalpha가치를 말하는 것 입니다. 도움이되기를 바랍니다.


답변

진짜 대답은 이것이 가장 간단하고 쉽습니다 ….

String white = "#ffffff";
int whiteInt = Color.parseColor(white);


답변

나는 같은 문제에 직면했다. 이 방법으로 해결할 수있었습니다. CQM이 말했듯이 Color.parseColor ()를 사용하는 것이이 문제에 대한 좋은 해결책입니다.

내가 사용한 코드는 다음과 같습니다.

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

이 경우 내 목표는 내 환경 설정 (color_prefs)에서 색상 선택을 변경할 때 Button의 텍스트 색상 (Button_C)을 변경하는 것이 었습니다.


답변

CQM답변다른 질문에 대한 ovokerie-ogbeta답변을 기반 으로이 솔루션을 찾았 습니다.

if (colorAsString.length() == 4) { // #XXX
    colorAsString = colorAsString.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3");
}

int color = Color.parseColor(colorAsString);