2014-10-25 2 views
1

Я пытаюсь создать ползунок, который случайным образом изменяет цвет нескольких частей пользовательского интерфейса, когда пользователь перемещает панель с одной стороны на другую. У меня есть часть кода, который уже работает, но я знаю, что это не так эффективно, как могло бы быть. У меня есть 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

Существует несколько вариантов. Вы можете вернуть свою функцию цвету и установить его основную процедуру, или вы можете передать макет в качестве параметра вашей функции. Далее следует пример последнего. Поскольку это функция, цветовая переменная воссоздается каждый раз, когда она вызывается, поэтому не нужно беспокоиться о том, что она будет такой же, когда вы вызываете функцию в другое время. Попробуй и посмотри.

 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; 
} 
Смежные вопросы