Android 安卓:在创建时设置随机颜色背景

Android 安卓:在创建时设置随机颜色背景,android,random,colors,background,oncreate,Android,Random,Colors,Background,Oncreate,我想要的是,当我加载我的应用程序时,从一个名为colors的值xml文件中存储的预定义字符串列表中随机获得一个特定的彩色背景 我目前拥有的是一个颜色集,作为使用eclipse中gui编辑器通过字符串颜色代码定义的背景 对于我的生活,我不知道如何让背景随机选择9个字符串中的一个,并在每次激活活动时显示它 这方面的指导将是非常宝贵的 您可以设置一个变量Random rnd=new Random()作为随机数(将生成介于0和1之间的psuedo随机数)。然后你可以说: if (rnd <

我想要的是,当我加载我的应用程序时,从一个名为colors的值xml文件中存储的预定义字符串列表中随机获得一个特定的彩色背景

我目前拥有的是一个颜色集,作为使用eclipse中gui编辑器通过字符串颜色代码定义的背景

对于我的生活,我不知道如何让背景随机选择9个字符串中的一个,并在每次激活活动时显示它


这方面的指导将是非常宝贵的

您可以设置一个变量
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
if(rnd<0.09){
//挑选第一种颜色
}否则如果(rnd>=0.09&&rnd<0.18){
//选择第二种颜色
}否则如果(rnd>=0.18&&rnd<0.27){
//选择第二种颜色
}else//etc等高达1.0时,您将有9个选项,每个选项随机被选中的机会相等

这样,每次调用
onCreate()
时,随机数
rnd
将确定背景是哪种颜色。

我想我可以找到一种简单的方法,但要实现多久,您可以从定义的颜色数组中选择随机颜色,然后将该字符串颜色解析到您的背景中

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

有一个比提供的答案好得多的答案

如果您想要一种真正的随机颜色,那么从res文件中“随机”选择并不能证明它的健壮性

相反,请使用以下代码段:

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

您可以使用
ColorGenerator
类获取随机
color.code

下面给出了代码片段

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
试试这个简单易行的方法


@Phil3992刚刚添加了定义亲爱的,检查一下。我得到的值是-118692481300,是整数吗?
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
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;
        }