我想在android屏幕上定期顯示一個白色矩形;或更改背景顏色。例如,我希望屏幕顏色每隔500毫秒從黑色變爲白色,大約200毫秒,然後變回黑色。如何定期在Android活動中顯示矩形
這樣做的最好方法是什麼?我確實嘗試了一個asynctask,但得到一個錯誤,只有原始線程可以觸摸視圖。我有一個類似的asynctask,它聽起來是一個週期性的音調,並且工作正常。
SOLUTION:
與我通過創建兩個定時器一個黑人和一個白人解決了我的問題的應答者的幫助。黑色的開始延遲了我想要顯示白色屏幕的時間。兩者具有相同的執行率,因此顯示白色屏幕,然後在持續時間毫秒之後顯示黑色屏幕。例如,屏幕是黑色的,但每秒閃爍白色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));
}
您可以從後臺訪問ui屬性,但必須先訪問ui線程,然後調用getActivity()。runOnUiThread();如果你想改變一些東西,並把等待邏輯放在那個線程之外 –