2014-09-18 6 views
5

बनाने पर यादृच्छिक रंग पृष्ठभूमि सेट करें, जब मैं अपना ऐप लोड करता हूं तो यह यादृच्छिक रूप से रंगों नामक एक एक्सएमएल फ़ाइल में संग्रहीत स्ट्रिंग की पूर्वनिर्धारित सूची से एक निश्चित रंगीन पृष्ठभूमि होती है।एंड्रॉइड:

मेरे पास वर्तमान में एक रंग सेट है जो ग्रहण में गुई संपादक का उपयोग कर स्ट्रिंग रंग कोड के माध्यम से परिभाषित पृष्ठभूमि के रूप में है।

मेरे जीवन के लिए पृष्ठभूमि को 9 तारों में से किसी एक को यादृच्छिक रूप से चुनने और गतिविधि सक्रिय होने पर इसे प्रदर्शित करने के तरीके को कैसे काम नहीं किया जा सकता है।

इस पर मार्गदर्शन अमूल्य होगा।

उत्तर

34
colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <item name="blue" type="color">#FF33B5E5</item> 
    <item name="purple" type="color">#FFAA66CC</item> 
    <item name="green" type="color">#FF99CC00</item> 
    <item name="orange" type="color">#FFFFBB33</item> 
    <item name="red" type="color">#FFFF4444</item> 
    <item name="darkblue" type="color">#FF0099CC</item> 
    <item name="darkpurple" type="color">#FF9933CC</item> 
    <item name="darkgreen" type="color">#FF669900</item> 
    <item name="darkorange" type="color">#FFFF8800</item> 
    <item name="darkred" type="color">#FFCC0000</item> 

    <integer-array name="androidcolors"> 
     <item>@color/blue</item> 
     <item>@color/purple</item> 
     <item>@color/green</item> 
     <item>@color/orange</item> 
     <item>@color/red</item> 
     <item>@color/darkblue</item> 
     <item>@color/darkpurple</item> 
     <item>@color/darkgreen</item> 
     <item>@color/darkorange</item> 
     <item>@color/darkred</item> 
    </integer-array> 

</resources> 

में

onCreate में()

int[] androidColors = getResources().getIntArray(R.array.androidcolors); 
int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)]; 
view.setBackgroundColor(randomAndroidColor); 
1

आप एक परिवर्तनीय संख्या के रूप में एक चर Random rnd = new Random(); सेट कर सकते हैं (0 और 1 के बीच एक psuedo- यादृच्छिक संख्या उत्पन्न करेगा)। तो आप कह सकते हैं:

if (rnd < 0.09) { 
     //pick first colour 
    } else if (rnd >= 0.09 && rnd < 0.18) { 
     //pick second colour 
    } else if (rnd >= 0.18 && rnd < 0.27) { 
     //pick second colour  
    } else // etc etc up to 1.0 when you will have 9 options, each with an equal chance of randomly being picked 

इस तरह, यादृच्छिक संख्या rnd का निर्धारण करेगा जो रंग पृष्ठभूमि हर बार onCreate() कहा जाता है।

4

मुझे लगता है कि मुझे एक आसान दृष्टिकोण मिल सकता है लेकिन कुछ कार्यान्वित करने में कितना समय लगता है, आप रंगों की परिभाषित सरणी से यादृच्छिक रंग चुनते हैं और पार्स की तुलना में आपकी पृष्ठभूमि में स्ट्रिंग रंग चुनते हैं।

<?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> 

और इस जावा कोड से

String[] array = context.getResources().getStringArray(R.array.animals_array); String randomStr = array[new Random().nextInt(array.length)];

//here you define your layout

LinearLayout myLayout = (LinearLayout) findViewById(R.id.that_linear);

myLayout.setBackgroundColor(Color.parseColor(randomStr));

+0

रंग सेट करने के @ Phil3992 सिर्फ परिभाषा प्रिय addded दृश्य संदर्भ का उपयोग कर सकते हैं, यह जाँच करें। – Kiloreux

4

वहाँ प्रदान की लोगों की तुलना में काफी बेहतर जवाब है।

यदि आप सचमुच यादृच्छिक रंग चाहते हैं, तो "यादृच्छिक रूप से" एक res फ़ाइल से चयन करना लगभग उतना ही मजबूत साबित नहीं होता है।

इसके बजाय, इस कोड का उपयोग:

Random rnd = new Random(); 
    currentStrokeColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); 
+0

मुझे मूल्य मिला -118692481300, पूर्णांक से बाहर? प्रारूप में बदलाव करने के लिए – kemdo

0

आप यादृच्छिक color.code पाने के लिए ColorGenerator वर्ग का उपयोग कर सकते हैं।

टुकड़ा नीचे

ColorGenerator generator = ColorGenerator.MATERIAL; 

int color=generator.getRandomColor(); 

यहाँ दी आप की तरह

mUserName.setText("Suraj"); 

mUserName.setTextColor(color); //it will populate name with random color each time you open your activity 
+0

thanx वृंदा पुरोहित –