2015-12-20 6 views
1

Я хочу изменить цвет своего фона на секунду после нажатия кнопки, чтобы подтвердить, была ли нажата правильная кнопка. Послесловие, я хочу переключить цвет обратно на черный, но когда я использую Thread.sleep(), он не меняет цвет до или после спящего потока. Любые другие предложения?Изменение цвета фона андроида

background.setBackgroundColor(Color.GREEN); 
thread.sleep(1000); 
background.setBackgroundColor(Color.BLACK); 
+0

Что такое объект с именем background? –

+0

Используйте функцию CountDownTimer для выполнения этой задачи. http://developer.android.com/reference/android/os/CountDownTimer.html – MyWay

+0

Почему бы просто не использовать background.postDelayed()? – aelimill

ответ

0

Измените код следующим образом:

background.setBackgroundColor(Color.GREEN); 
Thread thread = new Thread() { 
    @Override 
    public void run() { 
     try { 
      while(true) { 
       sleep(1000); 
      } 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

thread.start(); 
background.setBackgroundColor(Color.BLACK); 

Надеется, что это помогает !!!

+0

Это не похоже на изменение цвета, но все же позволяет мне нажимать кнопку в отличие от ранее, когда я не объявлял новый поток. Я должен, вероятно, дать более подробную информацию, хотя, чтобы помочь. В настоящее время этот код находится внутри setOnClickListener, который изменит цвет фона на зеленый в течение одной секунды, если правильная кнопка будет нажата и красная, если не нажата неправильная кнопка. Когда я попробовал это с thread.run() вместо thread.start(), он бесконечно зациклен. Действие, которое я получаю с этим вставленным кодом, - это всего лишь черный экран. –

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