【问题标题】:random color scheme using slide bar使用滑动条的随机配色方案
【发布时间】:2014-10-25 19:41:18
【问题描述】:

我正在尝试制作一个滑块,当用户将滑块从一侧滑动到另一侧时,它会随机改变用户界面几个部分的颜色。我有一段代码已经可以使用,但我知道它的效率并不高。我有 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”方法中为每个布局调用此方法的多个版本。可以用这个方案在一个方法中完成吗?

【问题讨论】:

    标签: android layout colors switch-statement


    【解决方案1】:

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

         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;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多