programing

16진수 색상 문자열에서 색상을 가져오는 방법

cafebook 2023. 8. 21. 21:37
반응형

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

메모들

을 해당문다로변환음으로 합니다.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

반응형