使用滑动条的随机配色方案

时间:2014-10-25 19:41:18

标签: android layout colors switch-statement

我正在尝试制作一个滑块,当用户将条形从一侧滑动到另一侧时,该滑块会随机更改用户界面的多个部分的颜色。我有一段已经有效的代码,但我知道它的效率不高。我有3个相同的布局修饰符如下:

    private void getLayout2(){

    int color = 0;

    final Random randColor2 = new Random();
    int control = randColor2.nextInt(4);

    switch(control){

    case 0: color = getResources().getColor(R.color.White);
    Log.i(TAG, "color is white");
    break;

    case 1: color = getResources().getColor(R.color.Red);
    Log.i(TAG, "color is red");
    break;

    case 2: color = getResources().getColor(R.color.Yellow);
    Log.i(TAG, "color is yellow");
    break;

    case 3: color = getResources().getColor(R.color.Blue);
    Log.i(TAG, "color is blue");
    break;

    }

    Layout2.setBackgroundColor(color);

    return;
}

我想要做的是更改同一段代码中的所有布局背景,但我不知道如何做到这一点,因为只有一个颜色变量,我不想要所有的颜色在任何给定的时间都是一样的。目前我只是为" onProgressChanged"中的每个布局调用此方法的多个版本。滑块侦听器的方法。这可以通过这种方案在一个方法中完成吗?

1 个答案:

答案 0 :(得分:0)

有很多选择。您可以让函数返回颜色并将其设置为主例程,也可以将布局作为参数传递给函数。后者的一个例子如下。由于这是一个函数,因此每次调用颜色变量时都会重新创建颜色变量,因此当您在不同的时间调用函数时,不必担心颜色变量是相同的。试试看吧。

     private void setRandomBackgroundColor(View layout){

         int color = 0;

         final Random randColor = new Random();
         int control = randColor.nextInt(4);

         switch(control) {

         case 0: 
             color = getResources().getColor(R.color.White);
             Log.i(TAG, "color is white");
             break;

         case 1: 
             color = getResources().getColor(R.color.Red);
             Log.i(TAG, "color is red");
             break;

         case 2: 
             color = getResources().getColor(R.color.Yellow);
             Log.i(TAG, "color is yellow");
             break;

         case 3: 
             color = getResources().getColor(R.color.Blue);
             Log.i(TAG, "color is blue");
             break;
         }

         layout.setBackgroundColor(color);

         return;
}