कन्वर्ट हेक्स रंग मूल्य (#ffffff) पूर्णांक मूल्य के लिए


88

मैं सर्वर से हेक्स रंग मान प्राप्त कर रहा हूं (इस रूप में, #xxxxxx , उदाहरण के #000000लिए, काला)

मैं इसे पूर्णांक मान में कैसे बदलूं?

मैंने कोशिश की कि मैं Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))और भी अधिक हेक्टेस्टिक प्राप्त कर सकूं0x000000 परिणाम , लेकिन यह intयहाँ के रूप में , किसी भी अन्य सुझाव नहीं है?

मुझे एक त्रुटि प्राप्त हुई: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer

मैं उनके लिए एंड्रॉइड एसडीके का उपयोग कर रहा हूं setBackgroundColor(int color) फ़ंक्शन के , जो आपको लगता है - जैसा कि आपने अनुमान लगाया होगा - एक पूर्णांक रंग मान।

यह इस प्रश्न का OPPOSITE है: Android में एक रंग पूर्णांक को हेक्स स्ट्रिंग में कैसे परिवर्तित किया जाए?


जैसा कि किसी कारण से मैं पोस्ट करने में असमर्थ हूं ... आप लगभग वहां हैं, लेकिन आपको दो-तर्क valueOfपद्धति की आवश्यकता है, जहां आप स्ट्रिंग इनपुट निर्दिष्ट करते हैं (# के बिना, बिल्कुल) और मूलांक, जो आधार को निर्दिष्ट करता है। Integer.valueOf(passedColor.substring(1, passedColor.length()), 16) यह किसी भी पूर्णांक आधार के साथ किया जा सकता है! download.oracle.com/javase/6/docs/api/java/lang/… , int)
ty1824

हाँ, मैं अपनी प्रतिक्रिया भी पोस्ट करने में असमर्थ था। माइक सैमुअल ने कहा कि हालांकि मैं क्या कहने जा रहा था।
ssell

जवाबों:


182

वास्तविक उत्तर का उपयोग करना है:

Color.parseColor(myPassedColor)एंड्रॉयड में, myPassedColorकिया जा रहा है hexकी तरह मूल्य #000या #000000या #00000000

हालाँकि, यह फ़ंक्शन शॉर्टहैंड हेक्स मानों जैसे समर्थन नहीं करता है#000


9
दुर्भाग्य से इसमें पार्स मूल्य नहीं है #000प्रलेखन
एलेक्स सेमेनिएक

@CQM शॉर्टहैंड हेक्स रंग को कैसे पार्स करें, जैसे #ccc। क्या कोई और तरीका है?
कविता_प

30

उत्तर में वास्तव में सरल लोग हैं, अगर आप हेक्स रंग को इंट में बदलना चाहते हैं, तो एंड्रॉइड कलर क्लास का उपयोग करें , उदाहरण नीचे दिया गया है

यह हल्के भूरे रंग के लिए है

Color.parseColor("#a8a8a8");

वह यह है और आप अपना परिणाम प्राप्त करेंगे।


और बस इसका उपयोग कैसे करें पर स्पष्ट करें: someText.setTextColor (Color.parseColor ("# f9e6ff"))
ब्रायन एम

15
Integer.parseInt(myString.replaceFirst("#", ""), 16) 

2
सुझाव के लिए धन्यवाद, मैंने बिना किसी लाभ के अभी-अभी यह कोशिश की, और यह शामिल है कि एक एंड्रॉइड फ़ंक्शन एक ही प्रकार का रंग परिणाम था जो काम करता है, भले ही वे दोनों इंट में लौट आए। Color.parseColor (myPassedColor)) मुझे नहीं लगा कि यह एक Android विशिष्ट समस्या थी, लेकिन यह पता चला है
CQM

4
मुझे नहीं पता कि लोगों ने इसे क्यों उखाड़ा; यह काम नहीं करता है !! यहां रंगों को 32 बिट्स में संग्रहीत किया जा रहा है, इसलिए उन्हें प्रिंट करना उन्हें लंबे समय तक प्रदर्शित करता है। parseInt एक नकारात्मक को सूचित करने के लिए एक स्पष्ट `- 'की तलाश करता है, और ints या longs के लिए साइन बिट का सम्मान नहीं करता है। इस प्रकार यह गलत नंबर देगा।
ईसाई चैपमैन

1
@enthdegree, ओपी को उद्धृत करने के लिए, "मुझे एक सर्वर से हेक्स रंग मान प्राप्त हो रहा है (इस रूप में, #xxxxxx" इसलिए ओपी का रंग 24 बिट्स 32 बिट्स नहीं है; कोई अल्फा चैनल नहीं है।
माइक सैमुअल

1
@AllDayAmazing, '#' कोई हेक्स अंक, चिन्ह या दशमलव विभाजक नहीं है, इसलिए parseIntयदि यह इनपुट पर मिलता है तो यह विफल हो जाएगा।
माइक सैमुअल

मेरी गलती, मैं जो कुछ कर रहा हूं उसमें बहुत उलझा हुआ हूं कि मैंने इसे जल्दी से पढ़ लिया और देखा parseColor()। आप बहुत सही हैं।
AllDayAmazing

7

मुझे वही समस्या है जो मुझे कुछ रंग के रूप में मिली #AAAAAAऔर मैं इसे एक ऐसे रूप में परिवर्तित करना चाहता हूं जिसे एंड्रॉइड उपयोग कर सके। मैंने पाया कि आप सिर्फ 0xFFAAAAAAइसलिए उपयोग कर सकते हैं ताकि एंड्रॉइड रंग को स्वचालित रूप से बता सके। ध्यान दें पहला मूल्य FFबता रहा है alpha। आशा करता हूँ की ये काम करेगा



3

मैं उसी समस्या का सामना कर रहा था। इस तरह मैं इसे हल करने में सक्षम था। जैसा कि CQM ने कहा, Color.parseColor () का उपयोग करना इस मुद्दे का एक अच्छा समाधान है।

यहाँ मैं उपयोग किया गया कोड है:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

इस मामले में मेरा लक्ष्य बटन के टेक्स्ट का रंग (Button_C) बदलना था जब मैं अपनी प्राथमिकता (color_prefs) से रंग चयन बदल देता हूं।



1

स्ट्रिंग में साझा प्राथमिकताएँ रंग कोड प्राप्त करें फिर पूर्णांक में कनवर्ट करें और लेआउट-पृष्ठभूमि रंग जोड़ें:

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));

0

इसे आज़माएं, अपने संसाधन में योग्‍य बनाएं ...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</shape>

फिर उपयोग करें ...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

रंग के साथ ... "#FFFFFF"

अगर रंग पारदर्शी उपयोग है ... setAlpha

mView1.setAlpha(x); x फ्लोट के साथ 0-1 Ej (0.9f)

शुभ लाभ

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