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


88

서버에서 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 진수 문자열로 변환하는 방법?


어떤 이유에서인지 게시 할 수 없습니다 ... 거의 다 왔지만 valueOf문자열 입력 (물론 #없이)과 밑을 지정하는 기수를 지정하는 두 인수 메서드 가 필요합니다 . Integer.valueOf(passedColor.substring(1, passedColor.length()), 16) 이것은 정수 밑으로 할 수 있습니다! download.oracle.com/javase/6/docs/api/java/lang/… , int)
ty1824 2011 년

네, 제 답변도 게시 할 수 없었습니다. 마이크 사무엘은 내가 말하려는 것을 거의 말했습니다.
2011-08-04

답변:


182

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

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

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


9
불행히도 in은와 같은 값을 구문 분석하지 않습니다 #000. 문서
Alex Semeniuk

@CQM #ccc. 다른 방법이 있습니까?
Kavita_p

30

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

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

Color.parseColor("#a8a8a8");

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


그리고 사용 방법에 대해 명확하게 설명하세요. someText.setTextColor (Color.parseColor ( "# f9e6ff"))
Brian M

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

2
제안 해 주셔서 감사합니다. 지금은 아무 소용이 없었고, 포함 된 Android 기능이 둘 다 int를 반환하더라도 작동하는 유일한 색상 결과라는 것이 밝혀졌습니다. Color.parseColor (myPassedColor)) 나는 이것이 안드로이드 특정 문제라고 생각하지 않았지만 그것은 밝혀졌습니다
CQM

4
사람들이 왜 이것을 찬성했는지 모르겠습니다. 작동하지 않습니다 !! 여기에있는 색상은 32 비트에 저장되므로 인쇄하면 길게 표시됩니다. parseInt는 음수를 나타내는 명시적인`- '를 찾고 int 또는 long에 대한 부호 비트를 존중하지 않습니다. 따라서 잘못된 번호를 제공합니다.
Christian Chapman

1
@enthdegree, OP를 인용하려면 "서버에서 16 진수 색상 값을 받고 있습니다 (이 형식에서는 #xxxxxx"). 따라서 OP가 처리하는 색상은 32 비트가 아닌 24 비트입니다. 알파 채널이 없습니다.
Mike Samuel

1
@AllDayAmazing, '#'은 16 진수, 부호 또는 소수점 구분 기호가 아니므로 parseInt입력에서 찾으면 실패합니다.
마이크 사무엘

나의 실수, 나는 내가하는 일에 너무 깊이 빠져서 그것을 빨리 읽고 보았다 parseColor(). 당신은 매우 정확합니다.
AllDayAmazing 2014 년

7

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



3

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

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

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

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



1

공유 환경 설정 색상 코드를 문자열로 가져온 다음 정수로 변환하고 레이아웃 배경 색상을 추가하십시오.

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));

0

이것을 시도하고 리소스에 드로어 블을 만드십시오 ...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</shape>

그런 다음 ...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

색상 포함 ... "#FFFFFF"

색상이 투명하면 ... setAlpha

mView1.setAlpha(x); x float 0-1 Ej (0.9f) 포함

행운을 빕니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.