Я хотел бы периодически отображать белый прямоугольник на экране Android; или изменить цвет фона. Например, каждые 500 мс я хочу, чтобы цвет экрана менялся с черного на белый примерно на 200 мс, а затем обратно на черный.
Как лучше всего это сделать? Я попытался с асинхронной задачей, но получил ошибку, что только исходный поток может касаться представления. У меня есть похожая асинтаск, которая звучит периодическим тоном и работает нормально.
РЕШЕНИЕ:
С помощью респондентов я решил свою проблему, создав два таймера: один для черного и один для белого. Черный запускается с задержкой на время, которое я хочу отобразить на белом экране. Оба имеют одинаковую скорость выполнения, поэтому отображается белый экран, а затем, через duration мс, отображается черный экран. Например, экран черный, но мигает белым каждую секунду в течение 200 мс.
@Override
protected void onResume() {
super.onResume();
mBlackTimer = new Timer();
mBlackTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
view.setBackgroundColor(Color.parseColor("#000000"));
}
});
}
}, duration, (long) (1000 / visionPeriod));
mWhiteTimer = new Timer();
mWhiteTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
view.setBackgroundColor(Color.parseColor("#ffffff"));
}
});
}
}, 0, (long) (1000 / visionPeriod));
}