답변:
Color
수업 방법을 보십시오 :
public static int parseColor (String colorString)
에서 안드로이드 문서 :
지원되는 형식은 다음과 같습니다. #RRGGBB #AARRGGBB '빨간색', '파란색', '녹색', '검정색', '흰색', '회색', '청록색', '자홍색', '노란색', '밝은 회색', '다크 그레이 '
#000
값 을 구문 분석하는 방법을 알고 있습니까?
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) }
, 내가 틀렸다면 바로
if(colorString.length() == 4 && colorString[0] == '#')
이 질문은 16 진수 색상과 관련된 여러 검색에 대해 제공되므로 여기에 요약을 추가하겠습니다.
진수 색상의 형식은 취 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);
문자열은로 시작해야합니다 #
. RRGGBB
및 AARRGGBB
형식이 모두 지원됩니다.
가능할 때마다 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
해당 문자열을 int
사용할 수 있는 색상으로 변환 setBackgroundColor
하고setTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16은 16 진수이며 일반 0-9가 아님을 의미합니다. 결과는 다음과 같아야합니다
int color = 0xFFFF0000;
#80000000
이 int 버전 일 것이라고 생각합니다 int color = 0x80000000;
. 그래도 문제가 해결되지 않으면 더 자세한 내용이 포함 된 새 질문 을 게시하여 나보다 더 많은 사람들이 알아 차릴 수 있습니다. #80000000
반투명 검은 색 을 명심하십시오 .
이것의
int color = Color.parseColor("colorstring");
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"/>
대신 0xFFF000을 사용하여 Color.HSVToColor 메서드에 전달하십시오.