android студия изменить фоновое изображение для нескольких изображений - PullRequest
3 голосов
/ 18 июня 2020

У меня есть 5 изображений в папке с возможностью переноса (bg1, bg2, bg3, bg4, bg5), bg1 - мой фон по умолчанию.

Я хочу изменить изображение фона, чтобы я нажмите кнопку, и когда он перейдет к окончательному изображению, он должен go снова перейти к первому изображению,

например, если я нажал кнопку, он должен установить bg2 в качестве фона, и если я нажму его снова, он должен установить bg3 в качестве фона и так далее,

Я пробовал приведенный ниже код, но он меняет только фоновое изображение один раз.

    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            int x = 0;

            while(x < 5){

             x ++;
                // Give image name that you want to show on button click
                layout.setBackgroundResource(R.drawable.bg+x);

            }

        }
    });

Ответы [ 2 ]

3 голосов
/ 18 июня 2020

Вы должны установить x как глобальную переменную. Вы устанавливаете x в функции, поэтому это всегда 0.

int x = 0; //global variable in activity/fragment

...

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              x ++;
              x %= 5;
              if (x==0) layout.setBackgroundResource(R.drawable.bg1);
              else if (x==1) layout.setBackgroundResource(R.drawable.bg2);
              else if (x==2) layout.setBackgroundResource(R.drawable.bg3);
              else if (x==3) layout.setBackgroundResource(R.drawable.bg4);
              else layout.setBackgroundResource(R.drawable.bg5);
            }

        }
    });
2 голосов
/ 18 июня 2020

Попробуйте:

// declare the varibale globally, or else everytime the onClick is called it will be reset to 0 
int x = 1;

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                int bg = 0;

                // are we larger than 5? lets start again at 1 :)
                if (x == 6) x = 1;

                if (x == 1) bg = R.drawable.bg1;
                if (x == 2) bg = R.drawable.bg2;
                if (x == 3) bg = R.drawable.bg3;
                if (x == 4) bg = R.drawable.bg4;
                if (x == 5) bg = R.drawable.bg5;

                layout.setBackgroundResource(bg);

                // lets increment you for the next round
                x++;
            }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...