Android: Set Random colour background on create

后端 未结 6 1607
既然无缘
既然无缘 2020-12-09 11:38

What I want is when I load my app up it to randomly have a certain colored background from a predefined list of strings stored in a values xml file called colours.

相关标签:
6条回答
  • 2020-12-09 12:01

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

    In onCreate()

    int[] androidColors = getResources().getIntArray(R.array.androidcolors);
    int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)];
    view.setBackgroundColor(randomAndroidColor);
    
    0 讨论(0)
  • 2020-12-09 12:11

    You could set a variable Random rnd = new Random(); as a random number (will generate a psuedo-random number between 0 and 1). Then you could say:

        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
    

    This way, the random number rnd will determine which colour the background is each time onCreate() is called.

    0 讨论(0)
  • 2020-12-09 12:24

    you can use ColorGenerator class to get random color.code.

    snippet given below

    ColorGenerator generator = ColorGenerator.MATERIAL;
    
    int color=generator.getRandomColor();
    

    here you can use the view reference to set color like

    mUserName.setText("Suraj");
    
    mUserName.setTextColor(color);  //it will populate name with random color each time you open your activity
    
    0 讨论(0)
  • 2020-12-09 12:25

    There's a much better answer than the ones provided.

    If you want a Truly random color, "randomly" choosing from a res file doesn't prove to be nearly as robust.

    Instead, use this code snippet:

      Random rnd = new Random();
        currentStrokeColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
    
    0 讨论(0)
  • 2020-12-09 12:25

    I think I could find an easy approach but some how long to implement ,you choose random color from a defined array of colors and than parse that string color to your background.

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

    and than this java code

    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 讨论(0)
  • 2020-12-09 12:27

    TRY THIS METHOD SIMPLE AND EASY

    private boolean isOne = false, isTwo = false, isThree = false, isFour = false, isFive = false;
    
    if(position==0){
                holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
                holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
                isTwo = true;
            }else if(isOne){
                holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
                holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
                isOne = false;
                isTwo = true;
            }else if(isTwo){
                holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color2));
                holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color2));
                isTwo = false;
                isThree = true;
            }else if(isThree){
                holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color3));
                holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color3));
                isThree = false;
                isFour = true;
            }else if(isFour){
                holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color4));
                holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color4));
                isFour = false;
                isFive = true;
            }else if(isFive){
                holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color5));
                holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color5));
                isFive = false;
                isOne = true;
            }
    
    0 讨论(0)
提交回复
热议问题