16 진 색상 문자열에서 색상을 얻는 방법


답변:


592

Color수업 방법을 보십시오 :

public static int parseColor (String colorString)

에서 안드로이드 문서 :

지원되는 형식은 다음과 같습니다. #RRGGBB #AARRGGBB '빨간색', '파란색', '녹색', '검정색', '흰색', '회색', '청록색', '자홍색', '노란색', '밝은 회색', '다크 그레이 '


4
누구나 #000값 을 구문 분석하는 방법을 알고 있습니까?
Alex Semeniuk

6
네, 그냥하세요 : if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }, 내가 틀렸다면 바로
잡아주세요

6
@ xdevs23 코드에 추가하려면 if 조건을 다음과 같이 변경하십시오.if(colorString.length() == 4 && colorString[0] == '#')
Zac

함수를 보여줄뿐만 아니라 사용하는 방법도 더 좋을 것입니다. MyView.setBackgroundColor (Color.parseColor ( "# 123456");
Yvonne Marggraf

int red = colorString.charAt (1) == '0'? 0 : 255; int blue = colorString.charAt (2) == '0'? 0 : 255; int green = colorString.charAt (3) == '0'? 0 : 255; Color.rgb (빨강, 파랑, 녹색);
GTID

253

시험:

myLayout.setBackgroundColor(Color.parseColor("#636161"));

4
당신이 자 마린을 사용하는 경우 ... 코드 상단에 "P"이 Android.Graphics.Color.ParseColor ( "# 636161")입니다
이고르 몬테

38

이 질문은 16 진수 색상과 관련된 여러 검색에 대해 제공되므로 여기에 요약을 추가하겠습니다.

int에서 색상

진수 색상의 형식은 취 RRGGBB하거나 AARRGGBB(알파, 녹색, 청색, 적색). 내 경험상 int직접 사용하는 경우 전체 AARRGGBB양식 을 사용해야합니다 . RRGGBB양식 만있는 경우 FF알파 (투명도)를 완전히 불투명하게하기 위해 접두사를 붙이십시오. 코드에서 설정하는 방법은 다음과 같습니다. 사용 0x시작 수단으로는 16 진수 및 10 기지 없습니다.

int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);

문자열에서 색상

다른 사람들이 지적했듯이 다음 Color.parseString과 같이 사용할 수 있습니다

int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);

문자열은로 시작해야합니다 #. RRGGBBAARRGGBB형식이 모두 지원됩니다.

XML의 색상

가능할 때마다 XML에서 실제로 색상을 가져와야합니다. 앱의 색상을 훨씬 쉽게 변경할 수 있으므로 권장되는 옵션입니다. 코드 전체에 많은 16 진 색상을 설정하면 나중에 변경하려고 시도하는 것이 큰 고통입니다.

Android 재질 디자인에는 16 진수 값이 이미 구성된 색상 구개가 있습니다.

이 테마 색상은 앱 전체에서 사용되며 다음과 같습니다.

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3F51B5</color>
  <color name="primary_dark">#303F9F</color>
  <color name="primary_light">#C5CAE9</color>
  <color name="accent">#FF4081</color>
  <color name="primary_text">#212121</color>
  <color name="secondary_text">#757575</color>
  <color name="icons">#FFFFFF</color>
  <color name="divider">#BDBDBD</color>
</resources>

추가 색상이 필요한 경우 XML에서 두 단계로 색상을 정의하는 것이 좋습니다. 먼저 16 진수 값 색상의 이름을 지정한 다음 특정 색상을 가져야하는 앱 구성 요소의 이름을 지정하십시오. 이렇게하면 나중에 색상을 쉽게 조정할 수 있습니다. 다시 이것은 colors.xml에 있습니다.

<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>

그런 다음 코드에서 색상을 설정하려면 다음을 수행하십시오.

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);    
myView.setBackgroundColor(myColor);

안드로이드 미리 정의 된 색상

Color 클래스에는 다수의 사전 정의 된 색상 상수가 있습니다. 이렇게 사용할 수 있습니다.

int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);

다른 색상은

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

노트


22

해당 문자열을 int사용할 수 있는 색상으로 변환 setBackgroundColor하고setTextColor

String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);

16은 16 진수이며 일반 0-9가 아님을 의미합니다. 결과는 다음과 같아야합니다

int color = 0xFFFF0000;

String color = "80000000"을 어떻게 변환 할 수 있습니까? int color =?
Ashish Sahu

나는 문자열 버전 #80000000이 int 버전 일 것이라고 생각합니다 int color = 0x80000000;. 그래도 문제가 해결되지 않으면 더 자세한 내용이 포함 된 새 질문 을 게시하여 나보다 더 많은 사람들이 알아 차릴 수 있습니다. #80000000반투명 검은 색 을 명심하십시오 .
Bryan Field

나는 int 색상이 = 0x80000000 일 것이라는 것을 알고 있지만 내 문제는 그것을 변환하는 방법입니다 ...하지만 이제는 int 색상 = parseColor ( "#"+ "80000000"); ... 감사에 대한 감사로 내 문제 자체를 해결할 것입니다.
Ashish Sahu

java.lang.NumberFormatException 코드를 사용하여 예외가 발생했습니다. 잘못된 int : "FFFF0000"
error1337


15

이 시도:

vi.setBackgroundColor(Color.parseColor("#FFFF0000"));

12

나는 이것을 사용하며 원하는 색상을 설정하는 데 효과적입니다.

public static final int MY_COLOR = Color.rgb(255, 102, 153);

각 빨강, 녹색 및 파랑에 대해 0-255를 사용하여 색상을 설정 한 다음 사용하려는 색상에 Color.BLUE 또는 Color.RED 대신 MY_COLOR를 배치하거나 Color 클래스가 제공하는 다른 정적 색상을 사용하십시오.

Google에서 컬러 차트를 검색하면 0-255를 사용하여 올바른 RGB 코드가있는 차트를 찾을 수 있습니다.


7

Xamarin에서 이것을 사용하십시오

Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));

6

res / values ​​/ colors.xml에 저장된 XML 파일 :

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

이 응용 프로그램 코드는 색상 리소스를 검색합니다.

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

이 레이아웃 XML은 색상을 속성에 적용합니다.

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>

5

대신 0xFFF000을 사용하여 Color.HSVToColor 메서드에 전달하십시오.


2
세 번째 F를 0으로 바꿔야 할 것입니다. OP에서는 처음 두 개의 F 문자가 불투명도를 설정하는 데 사용된다고 생각합니다.
Bryan Field

4

XML에서 색상을 정의하고 색상을 사용하여 배경색 또는 무언가를 변경하려는 경우이 API가 원하는 것입니다.

 ((TextView) view).setBackgroundResource(R.drawable.your_color_here);

내 샘플에서는 TestView에 사용했습니다.


0

단축 된 16 진 코드

int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.