2017-02-02 4 views
-2

У меня есть вопрос относительно развития Android. Я пытаюсь сделать приложение, которое меняет цвет экрана с красного на синий, а затем зеленый. Я присвоил onClickListener относительнуюLayout, которая превращает экран из белого в красный. Как сделать тот же самый onClickListener делать несколько вещей в порядке, так что, когда я нажимаю на экран, когда он поворачивает его на красный, и когда я его снова нажму, он превратит экран в синий и т. Д.Как сделать кнопку сделать несколько вещей?

Вот мой код до сих пор:

final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view); 

    layout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      layout.setBackgroundColor(Color.parseColor("#ff0000")); 
     } 
    }); 
+1

Существует несколько способов достижения этого, одним из способов является поддержание состояния; после щелчка установите состояние на этот цвет, а затем, щелкнув снова, проверьте состояние и соответствующим образом отреагируйте. Так, например, состояние может быть «enum» - красным, синим, зеленым. После первоначального щелчка установите значение «Красный». Если щелкнуть еще раз, проверьте состояние и установите соответствующий цвет, и так далее ... – Dayan

ответ

1

отслеживать состояние вашего клика. Нравится

private int colorState =0; 

    final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view); 

     layout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
    switch(colorState){ 
     case 0: 
      layout.setBackgroundColor(Color.parseColor("#ff0000")); 
      break; 
     case 1: 
      layout.setBackgroundColor(Color.parseColor("#000000")); 
      break; 
     case 2: 
      layout.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      break; 

     colorState++; 
    } 
+0

Я думаю, было бы также полезно сбросить 'colorState' значение 0 в качестве случая по умолчанию. В противном случае этот код не будет работать, когда его значение превысит 2. –

+0

Да, это так, как вы хотите реализовать. Его пример: D –

2

Сохраните список желаемых цветов в массиве. Следите за текущим индексом цвета и приращения после каждого щелчка, как так:

final RelativeLayout layout = (RelativeLayout) findViewById(R.id.view); 

layout.setOnClickListener(new View.OnClickListener() { 
    String[] colors = new String[]{"#ff0000", "#00ff00", "#0000ff"}; 
    int colorIndex = 0; 

    @Override 
    public void onClick(View view) { 
     String color = colors[colorIndex]; 
     colorIndex = colorIndex++ % colors.length; 
     layout.setBackgroundColor(Color.parseColor(color)); 
    } 
}); 

Оператор по модулю (%) гарантирует, что мы не показатель за конец массива.

Смежные вопросы