Логика для нажатия на картинку
Есть 6 картинок внизу и 6 пустых слотов для них наверху, если я нажал на картинку внизу, то она должна занять первый слот, неважно на какую я нажимаю: на первую или на последнюю, и соответственно каждая последующая второй третий и так далее.
У меня не получилось сделать это через if else, почему то дальше второго слота картинки не заполняются, отправляю вариант с нажатием на первую кнопку с картинкой
//булеан для проверки на заполненность слота картинкой
boolean for1pic = false;
boolean for2pic = false;
boolean for3pic = false;
//объявляем цвета - начало
final ImageView color1 = (ImageView) findViewById(R.id.color1);
final ImageView color2 = (ImageView) findViewById(R.id.color2);
final ImageView color3 = (ImageView) findViewById(R.id.color3);
//объявляем цвета - конец
//объявляем прозрачные слоты - начало
final ImageView trans1 = (ImageView) findViewById(R.id.trans1);
final ImageView trans2 = (ImageView) findViewById(R.id.trans2);
final ImageView trans3 = (ImageView) findViewById(R.id.trans3);
//объявляем прозрачные слоты - конец
//нажатие на первый цвет начало
color1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!for1pic){
color1.setVisibility(View.INVISIBLE);
trans1.setImageResource(R.drawable.color_black);
for1pic=true;
}
else if (for1pic){
color1.setVisibility(View.INVISIBLE);
trans2.setImageResource(R.drawable.color_black);
for2pic=true;
}
else if (!for2pic){
color1.setVisibility(View.INVISIBLE);
trans2.setImageResource(R.drawable.color_black);
for1pic=true;
}
else if (for2pic){
color1.setVisibility(View.INVISIBLE);
trans3.setImageResource(R.drawable.color_black);
for3pic=true;
}
Ответы (1 шт):
Автор решения: Alex_Skvortsov
→ Ссылка
Я бы сделал примерно так:
//объявляем цвета - начало
final ImageView color1 = (ImageView) findViewById(R.id.color1);
final ImageView color2 = (ImageView) findViewById(R.id.color2);
final ImageView color3 = (ImageView) findViewById(R.id.color3);
//объявляем цвета - конец
//объявляем прозрачные слоты - начало
final ImageView trans1 = (ImageView) findViewById(R.id.trans1);
final ImageView trans2 = (ImageView) findViewById(R.id.trans2);
final ImageView trans3 = (ImageView) findViewById(R.id.trans3);
//объявляем прозрачные слоты - конец
ArrayList<Integer> addedImages = new ArrayList<>();
void redrawAdded(){
int defaultColor = R.drawable.color_black; //этим цветом подкрашиваем изначально
if(addedImages.getSize() >= 1){
trans1.setImageResource(addedImages.get(0));
}
if(addedImages.getSize() >= 2){
trans2.setImageResource(addedImages.get(1));
}
if(addedImages.getSize() >= 3){
trans3.setImageResource(addedImages.get(2));
}
}
color1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
color1.setVisibility(View.INVISIBLE);
addedImages.add(color1Color); //здесь color1Color- цвет, который зависит от кнопки
redrawAdded();
}
}
color2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
color2.setVisibility(View.INVISIBLE);
addedImages.add(color2Color); //здесь color2Color- цвет, который зависит от кнопки
redrawAdded();
}
}
color3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
color3.setVisibility(View.INVISIBLE);
addedImages.add(color3Color); //здесь color3Color- цвет, который зависит от кнопки
redrawAdded();
}
}