Возможно ли с помощью Enum сделать переключение Layout разными цветами? Всем доброго времени суток. У меня есть такая задача. Мне необходимо при нажатии на экран смартфона сделать так что бы цвет Layout'а изменялся... Я Решил эту задачу но теперь начал изучать enum (перечисления) и загорелся таким вопросом. А можно ли с помощью Enum сделать переключение Layout разными цветами. И что то ни как не могу понять как это сделать. Можете ли вы указать что я делаю не так. Где что почитать что бы решить эту проблему. package com.example.screern; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; enum Colors { Red, Blue, Yellow; } public class MainActivity extends Activity implements OnClickListener{
} @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { Colors color; color = Colors.Red; color = Colors.Yellow; switch (color) { case Red: linearLayout1.setBackgroundColor(Color.RED); break; case Yellow: linearLayout1.setBackgroundColor(Color.YELLOW); break; default: break; }
} } Прилагаю код возможно кто то подскажет где в нём есть ошибка. Программа работает но выводит только жёлтый цвет, если убрать строку "color = Colors.Yellow;" то только красный цвет а самого переключения так и не происходит...
Проблема здесь заключается в том, что при каждом нажатии на LinearLayout вы переопределяете значение переменной color на Colors.Red, а затем сразу же на Colors.Yellow. Это приводит к тому, что в итоге у вас всегда будет применяться последнее значение, т.е. цвет YELLOW.
Для того чтобы сделать переключение цветов с использованием Enum, вам необходимо сохранять текущий цвет и при каждом нажатии на LinearLayout переключать его на следующий цвет из Enum.
Проблема здесь заключается в том, что при каждом нажатии на LinearLayout вы переопределяете значение переменной color на Colors.Red, а затем сразу же на Colors.Yellow. Это приводит к тому, что в итоге у вас всегда будет применяться последнее значение, т.е. цвет YELLOW.
Для того чтобы сделать переключение цветов с использованием Enum, вам необходимо сохранять текущий цвет и при каждом нажатии на LinearLayout переключать его на следующий цвет из Enum.
Примерно так:
public class MainActivity extends Activity implements OnClickListener {LinearLayout linearLayout1;
Colors currentColor = Colors.Red;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linearLayout1 = (LinearLayout)findViewById(R.id.LinearLayout1);
linearLayout1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (currentColor) {
case Red:
linearLayout1.setBackgroundColor(Color.RED);
currentColor = Colors.Blue;
break;
case Blue:
linearLayout1.setBackgroundColor(Color.BLUE);
currentColor = Colors.Yellow;
break;
case Yellow:
linearLayout1.setBackgroundColor(Color.YELLOW);
currentColor = Colors.Red;
break;
default:
break;
}
}
}
Таким образом, при каждом нажатии на LinearLayout будет меняться цвет согласно заданной последовательности Red -> Blue -> Yellow и так далее.