2013-06-19 5 views
16

पर पूर्णांक रंग मान कनवर्ट करें मैं एक तृतीय पक्ष सॉफ़्टवेयर को संशोधित करने का प्रयास कर रहा हूं। मैं एक रंग का उपयोग करना चाहता हूं जो कुछ तरीकों से लौटाया जाता है (जिसे मैं modifiy नहीं कर सकता) एक पूर्णांक के रूप में। हालांकि, मैं # एफएफ 00 एफएफ जैसे आरजीबी प्रारूप का उपयोग करना चाहता हूं। मैं रूपांतरण कैसे कर सकता हूं?आरजीबी

यहां एक HTML उदाहरण है http://www.shodor.org/stella2java/rgbint.html मैं एंड्रॉइड पर जावा में एक ही चीज़ संग्रहित करना चाहता हूं।

उत्तर

31

उपयोग इस

String hexColor = String.format("#%06X", (0xFFFFFF & intColor)); 

हम हेक्स में रंग मूल्य की लंबाई पता 6. तो तुम यहाँ 6 देखते हैं। % 06X से आने वाले परिणाम से मेल खाता है (0xFFFFFF & intColor) और यदि लंबाई 6 से कम है, तो परिणाम के शून्य से बाएं तरफ जोड़कर 6 परिणाम मिलते हैं। और आप # देखते हैं, इसलिए यह # char परिणाम में संलग्न हो जाता है और अंततः आपको हेक्स रंग मान मिलता है।

+0

क्या आप कृपया कोष्ठक के अंदर कोड समझा सकते हैं? – Marek

+0

क्या आप '(0xFFFFFF और intcolor)' के बारे में पूछ रहे हैं? यदि हां यह int मान को हेक्स में परिवर्तित कर देगा। –

+0

मुझे "#% 06X" में अधिक रुचि है। यह एक नियमित अभिव्यक्ति है, जिसे मैं पूरी तरह समझ नहीं पा रहा हूं। क्या आप इसे समझा सकते हैं? – Marek

1

आरजीबी हेक्सा दशमलव संख्या प्रारूप का उपयोग करता है। यदि आपके पास पूर्णांक मान है, तो इसे हेक्सा में परिवर्तित करें।

46

क्या मैं सबसे आसान और सबसे अच्छा समाधान के रूप में निम्नानुसार मुझसे सीधे रंग वर्ग का इस्तेमाल किया गया के लिए हो पाया:

int red = Color.red(intColor); 
int green = Color.green(intColor); 
int blue = Color.blue(intColor); 

इस तरह से मैं पहले से ही तार को संभालने के लिए बिना पूर्णांक मूल्यों के साथ सौदा कर सकते हैं। यदि दूसरी तरफ आरजीबी रंग का प्रतिनिधित्व करने वाली स्ट्रिंग आपको चाहिए, तो पंकज कुमार का जवाब सबसे अच्छा है। मुझे आशा है कि यह किसी के लिए उपयोगी होगा।

+0

यह 'बढ़िया है। धन्यवाद – cxphong

+1

वाक्यविन्यास बदल सकता है। जब तक एक स्थिर रंग वर्ग नहीं है जिसे मैं अनजान हूं: 'नया रंग (intcolor) .getRed(); ' –

+0

मुझे नहीं पता ... मैं अब बहुत लंबे समय से एंड्रॉइड पर काम नहीं कर रहा हूं। यदि आप इसके बारे में निश्चित हैं तो आप इस जानकारी के साथ अपना जवाब संपादित कर सकते हैं, शायद उस संस्करण के साथ भी जहां यह परिवर्तन हुआ था –

0

SDK 26 you can just use के बाद से

Color c = Color.valueOf(colorInt); 
अलग से है कि यह मनमाना ARGB से एक रंग उदाहरण बनाना संभव प्रतीत नहीं होता है

। अंतर्निहित कोड एक निजी कन्स्ट्रक्टर का उपयोग करता है:

/** 
* Creates a new <code>Color</code> instance from an ARGB color int. 
* The resulting color is in the {@link ColorSpace.Named#SRGB sRGB} 
* color space. 
* 
* @param color The ARGB color int to create a <code>Color</code> from 
* @return A non-null instance of {@link Color} 
*/ 
@NonNull 
public static Color valueOf(@ColorInt int color) { 
    float r = ((color >> 16) & 0xff)/255.0f; 
    float g = ((color >> 8) & 0xff)/255.0f; 
    float b = ((color  ) & 0xff)/255.0f; 
    float a = ((color >> 24) & 0xff)/255.0f; 
    return new Color(r, g, b, a, ColorSpace.get(ColorSpace.Named.SRGB)); 
} 
संबंधित मुद्दे