У меня есть GridLayout
с несколькими кнопками в нем.Обновление UI без замерзания
Мне нужно изменить цвет каждой кнопки в последовательности, скажем, каждые 3 секунды.
Я имею проблему над здесь ... Посмотрите на мой код:
runnableScan = new Runnable() {
@Override
public void run() {
GridLayout view = Grid;
for (int i = 0; i < view.getChildCount(); i++) {
Button btn = (Button)view.getChildAt(i);
btn.setBackgroundColor(Color.RED);
handlerScan.postDelayed(this, 3000);
}
}
};
handlerScan.postDelayed(runnableScan, 3000);
Ну .. это действительно изменяет цвет всех кнопок на красный, но меняет их все сразу !!!
Я хотел, чтобы он менял цвета в последовательности, по одной кнопке каждые 3 секунды.
Если я разместил там Toast
, то Toast
будет запускаться каждые три секунды с индексом каждой кнопки.
Что я делаю неправильно? Почему все кнопки сразу меняются на красный?
Вы уверены, что 'Toast' получает бег каждые 3 секунды, а вы не видя это до тех пор, пока предыдущий «Тост» не будет уволен? – codeMagic
Судья из кода, который вы опубликовали, фактически меняет все цвета кнопок сразу. Попробуйте заменить toast на Log.d и снова сравните время с записями logcat. Тост может дать вам иллюзию задержки, потому что второй тост не появится, пока не будет очищен первый тост. – TactMayers
Привет, CodeMagic и TactMayers! Спасибо за ваш отзыв. Фактически Toast работает каждые три секунды, и он отображает текст (индекс) каждой кнопки. Поскольку текст Toast изменяется, я уверен, что его увольняют каждые три секунды, так как он меняет свой текст. Есть идеи? –