मैं array.xml के अंदर रंग मान कैसे सहेज सकता हूं और इसे अपने कोड पर रंग [] सरणी के रूप में पुनर्प्राप्त कर सकता हूं?मैं array.xml में रंग कैसे सहेज सकता हूं और इसे वापस रंग में प्राप्त कर सकता हूं [] सरणी
पहले से धन्यवाद! गतिविधि कक्षा में
मैं array.xml के अंदर रंग मान कैसे सहेज सकता हूं और इसे अपने कोड पर रंग [] सरणी के रूप में पुनर्प्राप्त कर सकता हूं?मैं array.xml में रंग कैसे सहेज सकता हूं और इसे वापस रंग में प्राप्त कर सकता हूं [] सरणी
पहले से धन्यवाद! गतिविधि कक्षा में
colors.xml
<resources>
<string-array name="colors">
<item>#ff0000</item>
<item>#00ff00</item>
<item>#0000ff</item>
</string-array>
</resources>
कोड।
String[] allColors = context.getResources().getStringArray(R.array.colors);
Color.parseColor(allColors[0]) // red
Color.parseColor(allColors[1]) // green
Color.parseColor(allColors[2]) // blue
इस array.xml में है:
<resources>
<array name="colors">
<item>#ffffff</item>
<item>#000000</item>
</array>
</resources>
यह आपको रंग मान कि सरणी के लिए दे देंगे:
TypedArray ta = context.getResources().obtainTypedArray(R.array.colors);
int[] colors = new int[ta.length()];
for (int i = 0; i < ta.length(); i++) {
colors[i] = ta.getColor(i, 0);
}
ta.recycle();
यह सिर्फ डॉक्स में TypedArray उदाहरण पर फैलता : http://developer.android.com/guide/topics/resources/more-resources.html#TypedArray
उम्मीद है कि यह मदद करता है!
आप सरणी में आइटम के रूप में रंग संसाधनों का भी संदर्भ दे सकते हैं, उदा। '<सरणी नाम =" रंग ">
वास्तव में इस के लिए देखा।आईएमएचओ, यह शीर्ष और स्वीकृत उत्तर होना चाहिए ... –
धन्यवाद। यह वही है जो मैं ढूंढ रहा हूं। –
अपने रंग संसाधनों को परिभाषित करें, फिर उन्हें एक्सेस के लिए सरणी में जोड़ें।
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="bright_pink">#FF007F</color>
<color name="red">#FF0000</color>
<color name="orange">#FF7F00</color>
<color name="yellow">#FFFF00</color>
<color name="chartreuse">#7FFF00</color>
<color name="green">#00FF00</color>
<color name="spring_green">#00FF7F</color>
<color name="cyan">#00FFFF</color>
<color name="azure">#007FFF</color>
<color name="blue">#0000FF</color>
<color name="violet">#7F00FF</color>
<color name="magenta">#FF00FF</color>
<array name="rainbow">
<item>@color/bright_pink</item>
<item>@color/red</item>
<item>@color/orange</item>
<item>@color/yellow</item>
<item>@color/chartreuse</item>
<item>@color/green</item>
<item>@color/spring_green</item>
<item>@color/cyan</item>
<item>@color/azure</item>
<item>@color/blue</item>
<item>@color/violet</item>
<item>@color/magenta</item>
</array>
</resources>
फिर उन्हें इस तरह का उपयोग:
int[] rainbow = context.getResources().getIntArray(R.array.rainbow);
for (int i = 0; i < tileColumns; i++) {
paint.setColor(rainbow[i]);
// Do something with the paint.
}
अच्छा और साफ समाधान। महान काम करता है;) – David
मैं एक टिप्पणी पोस्ट नहीं कर सकते, तो मैं एक नया प्रतिक्रिया के रूप में इस में डाल दिया जाना चाहिए। मैं पूरी तरह से स्काई केल्सी w.r.t. के साथ सहमत हूँ। रंग संसाधन प्रकार का उपयोग करने की डिजाइन पसंद। हालांकि, मुझे लगता है कि उन तक पहुंचने के लिए सुझाव विधि काम नहीं कर पाई। इस तरह मैंने रंगों की सूची के माध्यम से आसानी से लूप करने के लिए एक एक्सएमएल सरणी के उपयोग को लागू किया और रंगों को विभिन्न (कस्टम चित्रित) दृश्यों पर लागू किया।
arrays.xml में सबसे पहले सरणी:
<array name="ingr_color_arr">
<item>@color/ingr_red1</item>
<item>@color/ingr_orange1</item>
<item>@color/ingr_yellow1</item>
<item>@color/ingr_green1</item>
<item>@color/ingr_blue1</item>
<item>@color/ingr_violet1</item>
<item>@color/ingr_red2</item>
<item>@color/ingr_orange2</item>
<item>@color/ingr_yellow2</item>
<item>@color/ingr_green2</item>
<item>@color/ingr_blue2</item>
<item>@color/ingr_violet2</item>
</array>
फिर color.xml में
:
<color name="ingr_red1">#FFCC0000</color>
<color name="ingr_orange1">#FFED5F21</color>
<color name="ingr_yellow1">#FFFAE300</color>
<color name="ingr_green1">#FF5B9C0A</color>
<color name="ingr_blue1">#FF0A0D9C</color>
<color name="ingr_violet1">#FF990A9C</color>
<color name="ingr_red2">#FFFFCCCC</color>
<color name="ingr_orange2">#FFFFEACC</color>
<color name="ingr_yellow2">#FFFFFECC</color>
<color name="ingr_green2">#FFC7F5C4</color>
<color name="ingr_blue2">#FFC4DAF4</color>
<color name="ingr_violet2">#FFE1C4F4</color>
तो यह उपयोग करने के लिए:
TypedArray ta = res.obtainTypedArray(R.array.ingr_color_arr);
int colorToUse = ta.getResourceId(intGroupNum.intValue() - 1, R.color.recipe_detail_border);
paint.setColor(colorToUse);
कुंजी यहाँ उपयोग करने के लिए है getResourceId क्योंकि setColor (int) रंग के लिए संसाधन आईडी की अपेक्षा करने जा रहा है। जब मुझे getIntArray()
या getColor()
के साथ मान प्राप्त करने का प्रयास किया गया तो मुझे "संसाधन नहीं मिला" त्रुटियां मिल रही थीं।
सबसे लोकप्रिय उत्तर काम कर सकता है ... मैंने कोशिश नहीं की क्योंकि मैंने 'रंगों की सरणी' डिजाइन पसंद को बेहतर पसंद किया।
मुझे "" संसाधन नहीं मिला "त्रुटि भी मिली। आपका समाधान मेरे लिए काम करता है .. धन्यवाद – W0rmH0le
धन्यवाद। मैंने यह वास्तव में एक अच्छा और साफ समाधान पाया। खासकर क्योंकि अगर आपको सूची में हर रंग के लिए विशिष्ट नाम की आवश्यकता नहीं है तो यह थोड़ा अनावश्यकता दिखाता है। – Mathias
अन्य समाधान मेरे लिए काम नहीं किया। धन्यवाद! –