我有一個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
從您發佈的代碼判斷,它實際上是一次更改所有按鈕的顏色。嘗試用Log.d替換Toast,並再次將時間與logcat條目進行比較。吐司可能會給你一種延遲的幻覺,因爲在第一道吐司被清除之前,第二道吐司纔會出現。 – TactMayers
你好codeMagic和TactMayers!感謝您的反饋意見。事實上,Toast每三秒運行一次,並顯示每個按鈕的文本(索引)。由於Toast文字發生變化,我相信它會在每三秒鐘更改一次文字後觸發。有任何想法嗎? –