我正在尝试制作一个滑块,当用户将条形从一侧滑动到另一侧时,该滑块会随机更改用户界面的多个部分的颜色。我有一段已经有效的代码,但我知道它的效率不高。我有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"中的每个布局调用此方法的多个版本。滑块侦听器的方法。这可以通过这种方案在一个方法中完成吗?
答案 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;
}