Изменение образа во время выполнения

#android #android-layout

#Android #android-макет

Вопрос:

Теперь я могу изменять изображение при нажатии onTouch, например, я нажимаю image1, чтобы сделать его невидимым и показать тот, который у меня есть под ним…

Теперь я хочу изменить изображение во время выполнения, в основном у меня есть массив, если array [i] = 5; тогда я хочу сделать image5 невидимым?

Как я могу это сделать?, Я попробовал это с

 try{
     Thread.sleep(2000);
     }
catch
  {
  }
  

и он затемняет экран, а затем показывает фон через 2 секунды, но я никогда не вижу, чтобы изображение становилось невидимым;

я хотел бы иметь возможность сделать что-то вроде этого

 for(int i=0;i < array.length; i  )
{
 if(array[i] == 1)
     {
          try
          {
         Thread.sleep(1000);
         ImageView image = (ImageView)findById(myImage01);
         image.setVisibility(View.INVISIBLE);      
         Thread.sleep(1000);
         image.setVisibility(View.VISIBLE);  

           }  
         catch(InterruptedException e) 
            {
            }
       }
  

}

Вы поняли идею … прямо сейчас, если я сделаю это, экран затемнится, а затем вернется к основному макету и ничего не сделает : (

Заранее благодарю вас

Кстати, я новичок в Android (пожалуйста, подумайте: ( )

Ответ №1:

Давайте посмотрим, правильно ли я это понимаю. Вы пытаетесь отобразить изображение, сделав невидимым изображение, расположенное над ним?

Кажется, что более простым способом было бы изменить изображение фактического imageview, которое вы делаете невидимым.

 image.setImageResource(R.drawable.<image>)
  

Где вы меняете имя изображения, помещенного в вашу папку res / drawable-hdpi / mdpi / ldpi.

Комментарии:

1. Звучит неплохо, но как насчет затемнения экрана при использовании Thread.sleep ? 🙁

2. Я предполагаю, что он отключается, потому что поток пользовательского интерфейса переведен в спящий режим.

Ответ №2:

Thread.sleep() — плохая идея, потому что она останавливает поток. Итак, если это пользовательский интерфейс, он больше не может обновлять экран. Вероятно, это то, что вы наблюдаете. Используйте что-то вроде

 new Handler().postDelayed(new Runnable() { 
  void run() {
      image.setVisibility(View.VISIBLE);
  }
}, 1000);
  

Комментарии:

1. где бы я это реализовал, если бы в классе MyView?

2. вы могли бы создать метод switchImage , который переключает видимость изображения или изменяет само изображение. Затем вы должны вызвать switchImage внутри run метода обработчика. Также вы бы снова вызвали Handler.postDelayed там.