我寫這裏是因爲我在Android Studio中有一個非常煩人的問題。 我的「應用程序」非常簡單,一頁有13個按鈕;我想要的只是簡單的:當我點擊第13個按鈕時,逐一更新前十二個按鈕。 我想看看按鈕更新每個之間有一點點間隔,但我不明白如何去做。 我在「onClick」方法中嘗試了很多技巧,但我無法弄清楚如何解決它;我得到的是,經過一段時間(所得到的時間加起來,我把這個功能加入了各種「睡眠」),所有的按鈕同時變成了彩色。 我把我的最後一次嘗試,但如果你有任何其他的方式做到這一點,我願意改變繼續前進的方式。Android Studio:單擊按鈕時逐個更新多個按鈕的背景
int[] buttonIDs = new int[] {R.id.button1, R.id.button2, R.id.button3, R.id.button4, R.id.button5, R.id.button6, R.id.button7,
R.id.button8, R.id.button9, R.id.button10, R.id.button11, R.id.button12 };
int currentI = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button goButton = (Button) findViewById(R.id.button13);
goButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (currentI < buttonIDs.length) {
Button b = (Button) findViewById(buttonIDs[currentI]);
b.setBackgroundColor(Color.parseColor("#FF22FF"));
currentI++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Thread t = new Thread() {
public void run() {
goButton.performClick();
}
};
t.start();
}
}
});
}
這種嘗試的結果是,第一個按鈕變成彩色,然後我得到「應用程序已停止」錯誤的Android模擬器。
在此先感謝
你不應該睡在UI線程上。這隻會阻止用戶界面迴應。 –
即使我將其刪除,應用程序也會崩潰。除此之外,我需要一種方法讓按鈕一個接一個着色,因此我放了一個睡眠(我甚至試圖在線程t的「運行」方法中放入「睡眠」,但它不會改變任何東西。 – Andrew1410
UI線程負責對按鈕進行樹更改,通過睡眠UI線程可以阻止這些更改的生效,所以這絕對不是正確的解決方案,請參閱下面的兩個答案以獲得一些建議,它們都不是完整的,但希望他們會幫助你在正確的方向 –