हेक्साडेसिमल रंग स्ट्रिंग से एक रंग कैसे प्राप्त करें


305

मैं एक हेक्सा स्ट्रिंग से एक रंग का उपयोग करना चाहूंगा जैसे "#FFFF0000"(कहना) लेआउट के पृष्ठभूमि रंग को बदलना। Color.HSVToColorएक विजेता की तरह दिखता है, लेकिन यह float[]एक पैरामीटर के रूप में लेता है ।

क्या मैं समाधान के किसी भी करीब हूँ?


जवाबों:


592

Colorवर्ग विधि का प्रयास करें :

public static int parseColor (String colorString)

से Android दस्तावेज़ :

समर्थित प्रारूप हैं: #RRGGBB #AARRGGBB 'रेड', 'ब्लू', 'ग्रीन', 'ब्लैक', 'व्हाइट', 'ग्रे', 'सियान', 'मैजेंटा', 'येलो', 'लाइटग्रे', 'डार्कग्रे' '


4
किसी को पता है कि #000मूल्यों को पार्स कैसे करें ?
एलेक्स सेमेनिएक

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) }कृपया मुझे सही करें अगर मैं गलत हूं
xdevs23

6
@ Xdevs23 कोड में जोड़ने के लिए, यदि इस पर स्थिति बदलें:if(colorString.length() == 4 && colorString[0] == '#')
Zac

आपका जवाब बेहतर होगा यदि आप केवल फ़ंक्शन नहीं दिखाते हैं, लेकिन इसका उपयोग कैसे करें: MyView.setBackgroundColor (Color.parseColor ("# 123456");
Yvonne Marggraf

int red = colorString.charAt (1) == '0'? 0: 255; int नीला = colorString.charAt (2) == '0'? 0: 255; int green = colorString.charAt (3) == '0'? 0: 255; रंग। आरजीबी (लाल, नीला, हरा);
GTID

253

प्रयत्न:

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

4
अगर आप xamarin का उपयोग कर रहे हैं .. कोड यह Android है। Graphics.Color.ParseColor ("# 636161") "P" के साथ ऊपरी
इगोर

38

यह प्रश्न हेक्स रंग से संबंधित कई खोजों के लिए आता है इसलिए मैं यहां एक सारांश जोड़ूंगा।

रंग int से

हेक्स रंग रूप लेते हैं RRGGBBया AARRGGBB(अल्फा, लाल, हरा, नीला)। मेरे अनुभव में, intसीधे उपयोग करते समय , आपको पूर्ण AARRGGBBफ़ॉर्म का उपयोग करने की आवश्यकता होती है । यदि आपके पास केवल RRGGBBफॉर्म है तो इसे FFअल्फा (पारदर्शिता) पूरी तरह से अपारदर्शी बनाने के लिए उपसर्ग करें । यहां बताया गया है कि आप इसे कोड में कैसे सेट करेंगे। का उपयोग करना 0xशुरू साधन पर यह षोडश आधारी और आधार नहीं 10 है।

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

स्ट्रिंग से रंग

के रूप में दूसरों का उल्लेख किया है, तो आप उपयोग कर सकते हैं Color.parseStringतो तरह

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

ध्यान दें कि स्ट्रिंग को एक से शुरू करना चाहिए #। दोनों RRGGBBऔर AARRGGBBप्रारूप समर्थित हैं।

XML से रंग

जब भी संभव हो आपको XML से अपने रंग प्राप्त करने चाहिए। यह अनुशंसित विकल्प है क्योंकि यह आपके ऐप में रंग परिवर्तन करना बहुत आसान बनाता है। यदि आप अपने कोड में बहुत सारे हेक्स रंग सेट करते हैं तो बाद में उन्हें बदलने की कोशिश करना एक बड़ा दर्द है।

एंड्रॉइड मटेरियल डिज़ाइन में पहले से कॉन्फ़िगर किए गए हेक्स मानों के साथ रंग तालु हैं।

ये थीम रंग आपके एप्लिकेशन में उपयोग किए जाते हैं और इस तरह दिखते हैं:

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 में दो चरणों में अपने रंग को परिभाषित करने के लिए एक अच्छा अभ्यास है। पहले हेक्स वैल्यू कलर को नाम दें और फिर अपने ऐप के एक कंपोनेंट को नाम दें, जिसे एक निश्चित कलर मिलना चाहिए। इससे बाद में रंगों को समायोजित करना आसान हो जाता है। फिर, यह color.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

टिप्पणियाँ


22

एक करने के लिए कन्वर्ट कि स्ट्रिंग intरंग, जिसमें इस्तेमाल किया जा सकता setBackgroundColorहै औरsetTextColor

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

16 का मतलब है कि यह हेक्साडेसिमल है न कि आपका नियमित 0-9। परिणाम जैसा होना चाहिए वैसा ही होगा

int color = 0xFFFF0000;

मैं स्ट्रिंग रंग कैसे बदल सकता हूँ = "80000000"; रंग करने के लिए =?
आशीष साहू

मुझे लगता है कि स्ट्रिंग संस्करण aught होने की #80000000स्थिति में इंट संस्करण होगा int color = 0x80000000;। अगर वह काम नहीं करता है तो अधिक विवरण के साथ एक नया प्रश्न पोस्ट करें ताकि मेरे से अधिक लोग इसे नोटिस करेंगे। ध्यान रखें #80000000एक पारभासी काला रंग है।
ब्रायन फील्ड

मुझे पता है int int color = 0x80000000 होगा, लेकिन मेरी समस्या यह है कि इसे कैसे रूपांतरित करें ... लेकिन अब मैं int color = parseColor ("#" + "80000000") के साथ मेरी समस्या को हल कर दूंगा; ... उत्तर के लिए धन्यवाद।
आशीष साहू

मुझे आपके कोड का उपयोग करके एक अपवाद मिला: java.lang.NumberFormatException: अमान्य int: "FFFF0000"
त्रुटि 1337


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 का उपयोग करें, जो रंग श्रेणी प्रदान करता है।

बस रंग चार्ट के लिए एक Google खोज करें और इसे आप 0-255 का उपयोग करके सही RGB कोड के साथ एक चार्ट पा सकते हैं।


7

Xamarin में यह प्रयोग करें

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

6

XML फ़ाइल को Res / मान / color.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 को एक शून्य से बदल दें। ओपी में, मुझे लगता है कि पहले दो एफ अक्षर का उपयोग अपारदर्शिता निर्धारित करने के लिए किया जाता है।
ब्रायन फील्ड

4

यदि आप अपने XML में एक रंग को परिभाषित करते हैं और पृष्ठभूमि रंग या कुछ बदलने के लिए इसका उपयोग करना चाहते हैं, तो यह एपीआई वह है जिसे आप ढूंढ रहे हैं:

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

अपने नमूने में मैंने इसे टेस्टव्यू के लिए इस्तेमाल किया


0

छोटा हेक्स कोड के लिए

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);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.