16진수 색상 문자열에서 색상을 가져오는 방법
저는 다음과 같은 헥사 스트링의 색상을 사용하고 싶습니다."#FFFF0000"
레이아웃의 배경색을 변경합니다.Color.HSVToColor
승자처럼 보이지만 그것은 필요합니다.float[]
매개 변수로
저는 그 해결책에 조금이라도 가깝습니까?
해라Color
클래스 메소드:
public static int parseColor (String colorString)
Android 설명서에서:
지원되는 형식은 #RRGGBB #AARGGBB '레드', '블루', '그린', '블랙', '화이트', '그레이', '시안', '마젠타', '옐로우', '라이트그레이', '다크그레이'입니다.
Android X:String.toColorInt()
시도:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
이 질문은 16진수 색상과 관련된 여러 검색에 대한 질문이므로 여기에 요약을 추가하겠습니다.
int에서 색상
육각색이 형태를 취함RRGGBB
또는AARRGGBB
(알파, 빨간색, 녹색, 파란색).제 경험상, 사용할 때int
직접적으로, 당신은 풀을 사용해야 합니다.AARRGGBB
양식. 만약 당신이 그것만 가지고 있다면.RRGGBB
형식을 지정한 다음 접두사로 붙입니다.FF
알파(투명도)를 완전히 불투명하게 만듭니다.코드로 설정하는 방법은 다음과 같습니다.사용.0x
시작은 기본 10이 아닌 16진수임을 의미합니다.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
문자열에서 색상
다른 사람들이 언급했듯이, 당신은 다음을 사용할 수 있습니다.Color.parseColor
이와 같이
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
문자열은 다음으로 시작해야 합니다.#
.둘다요.RRGGBB
그리고.AARRGGBB
형식이 지원됩니다.
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);
Android 미리 정의된 색상
색상 클래스에는 여러 가지 미리 정의된 색상 상수가 제공됩니다.이렇게 사용하시면 됩니다.
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
메모들
- 16진수 색상을 빠르게 찾는 방법은 김프(또는 다른 사진 편집 소프트웨어)에서 색상 선택기 대화 상자를 여는 것입니다.
- 재료 설계의 표준 불투명도 수준
을 해당문다로변환음으로 합니다.int
에사할수있색는용에 할 수 setBackgroundColor
그리고.setTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16은 정규 0-9가 아닌 16진수임을 의미합니다.결과는 다음과 같아야 합니다.
int color = 0xFFFF0000;
그건…
int color = Color.parseColor("colorstring");
사용해 보십시오.
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
저는 이것을 사용하는데 제가 원하는 색을 설정하는 데 아주 잘 맞습니다.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
빨간색, 녹색 및 파란색 각각에 대해 0-255를 사용하여 색상을 설정한 다음 원하는 위치에 색상 대신 MY_COLOR를 배치합니다.파란색 또는 색상.빨간색 또는 색상 클래스에서 제공하는 다른 정적 색상입니다.
구글에서 컬러 차트를 검색하기만 하면 0-255를 사용하여 정확한 RGB 코드가 있는 차트를 찾을 수 있습니다.
사용해 보세요.
int colorInt = Color.parseColor("#FF00FFF0");
bg.setBackgroundColor(colorInt);
여기서 bg는 배경색을 설정할 뷰 또는 레이아웃입니다.
사마린에서 사용
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
대신 0xFF000을 사용하여 색상으로 전달해 보십시오.HSV ToColor 메서드입니다.
XML에서 색상을 정의하고 이를 사용하여 배경색 또는 기타 배경색을 변경하려는 경우 이 API가 원하는 것입니다.
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
샘플에서 TestView에 사용했습니다.
단축된 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);
16진수 코드에서 색상 이름으로 직접 구현할 사전 정의된 클래스가 없으므로 키 값 쌍 개념을 간단하게 시도하고 이 코드를 따르십시오.
String hexCode = "Any Hex code" //#0000FF
HashMap<String, String> color_namme = new HashMap<String, String>();
color_namme.put("#000000", "Black");
color_namme.put("#000080", "Navy Blue");
color_namme.put("#0000C8", "Dark Blue");
color_namme.put("0000FF", "Blue");
color_namme.put("000741", "Stratos");
color_namme.put("001B1C", "Swamp");
color_namme.put("002387", "Resolution Blue");
color_namme.put("002900", "Deep Fir");
color_namme.put("002E20", "Burnham");
for (Map.Entry<String, String> entry : color_namme.entrySet()) {
String key = (String) entry.getKey();
String thing = (String) entry.getValue();
if (hexCode.equals(key))
Color_namme.setText(thing); //Here i display using textview
}
완전한 답변을 작성했습니다.
/**
* Input: Hex Value of ARGB, eg: "#FFFF00FF", "#FF00FF", "#F0F"
* Output: Float Color Array with with red, green,
* blue and alpha (opacity) values,
* eg: floatArrayOf(0.63671875f, 0.76953125f, 0.22265625f, 1.0f)
*/
private fun getFloatArrayFromARGB(argb: String): FloatArray {
val colorBase: Int = if (argb.length == 4) {
val red = if (argb[1] == '0') 0 else 255
val green = if (argb[2] == '0') 0 else 255
val blue = if (argb[3] == '0') 0 else 255
Color.rgb(red, green, blue)
} else {
Color.parseColor(argb)
}
val red = Color.red(colorBase)
val green = Color.green(colorBase)
val blue = Color.blue(colorBase)
val alpha = Color.alpha(colorBase)
return floatArrayOf(
red / 255f,
green / 255f,
blue / 255f,
alpha / 255f
)
}
용도:
private val colorValue = getFloatArrayFromARGB("#F0F")
누군가에게 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/5248583/how-to-get-a-color-from-hexadecimal-color-string
'programing' 카테고리의 다른 글
서비스 계층이 저장소 구현에 어떻게 적합합니까? (0) | 2023.08.21 |
---|---|
스프링 부트로 여러 서블릿 컨테이너/서블릿 구성 (0) | 2023.08.21 |
버블 정렬 구현이 영원히 반복되는 이유는 무엇입니까? (0) | 2023.08.21 |
사전 함께 추가 (0) | 2023.08.21 |
라벨 변경 입력 값 (0) | 2023.08.21 |