setBackgroundColor игнорируется - PullRequest
0 голосов
/ 28 июня 2018
   layout.setBackgroundColor(Color.GREEN);
    try {
        Thread.sleep(1250);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
   layout.setBackgroundColor(Color.BLUE);

Сначала я хочу изменить цвет фона моего макета на зеленый, а после ожидания в течение 1,25 с он должен стать синим. BackgroundColor меняет цвет на синий через 1,25 секунды, но не становится зеленым раньше. Как я могу это исправить?

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Вы только что изменили свой цвет фона выше. Так что он считается вашим последним СИНИМ цветом.

ты должен сделать что-то подобное.

layout.setBackgroundColor(Color.GREEN);

 Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() {
         @Override 
         public void run() { 
              layout.setBackgroundColor(Color.BLUE);
         } 
    }, 1250); 
0 голосов
/ 28 июня 2018

Попробуйте обработчик так:

layout.setBackgroundColor(Color.GREEN);
 Handler h=new Handler();
        h.postDelayed(new Runnable() {
            @Override
            public void run() {
                layout.setBackgroundColor(Color.BLUE);

            }
        },1250);

Никогда, не выполняйте Thread.sleep () в потоке пользовательского интерфейса .

Это то, что изначально вызывает проблему.

Вы можете использовать это, чтобы спать, например. фоновая нить.

Это решение Handler имеет два преимущества :

(1) позволяет избежать системных издержек 2-го потока,

(2) работает в потоке пользовательского интерфейса, поэтому может вносить изменения в пользовательский интерфейс, не вызывая исключений.

0 голосов
/ 28 июня 2018

Вы переводите основной поток (поток пользовательского интерфейса) в спящий режим, который вызывает проблему.

Попробуйте это

layout.setBackgroundColor(Color.GREEN);
layout.postDelayed(new Runnable() {
    @Override
    public void run() {
        layout.setBackgroundColor(Color.BLUE);
    }
}, 1250);

Убедитесь, что layout объявлено как окончательное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...