我想爲應用程序中的屏幕創建一個計時器來凍結。比如說兩秒鐘。我不希望屏幕對任何屏幕按鈕點擊作出反應。這是「皺眉」嗎?或者還有另外一種解決這個問題的方法。凍結一個android應用程序
我的應用程序:
用戶點擊:
我想,然後暫停一切兩秒鐘(所以我的其他按鈕的聽衆不要去)和那麼我希望聽衆回去,因爲我會將按鈕從綠色變成灰色。
我想爲應用程序中的屏幕創建一個計時器來凍結。比如說兩秒鐘。我不希望屏幕對任何屏幕按鈕點擊作出反應。這是「皺眉」嗎?或者還有另外一種解決這個問題的方法。凍結一個android應用程序
我的應用程序:
用戶點擊:
我想,然後暫停一切兩秒鐘(所以我的其他按鈕的聽衆不要去)和那麼我希望聽衆回去,因爲我會將按鈕從綠色變成灰色。
在點擊處理程序中,您可以更改顏色並刪除所有按鈕的onclick偵聽器,並啓動一個後臺線程來執行您的計時。當後臺線程休眠2分鐘後,您可以將onclick監聽器添加回所有按鈕。這樣你就不會創建完全沒有響應的UI,但是你可以達到禁用按鈕的效果。
public class myListener implements OnClickListener() {
private boolean ignoreClicks = false;
public void setIgnoreClicks(boolean b) {
this.ignoreClicks = b;
}
@Override
public void onClick(View v) {
if (!ignoreClicks) {
// use v to get the button, then change the color
ignoreClicks = true;
// start a new AsyncTask and give it the listener and the view
// in doInBackground sleep for 2 seconds
// in onPostExecute change the color of the button back to normal
// (you have a reference to the button because you gave the view to the AsyncTask)
// and set ignoreClicks to false in the listener
}
}
}
創建此偵聽器的一個實例並將其用於每個按鈕。
有沒有簡單的方法來刪除所有按鈕的onclick監聽器?因爲假設我有50個按鈕,那麼很多聽衆要停下來,然後再次開始備份。 – EGHDK
仍然沒有足夠的上下文。創建一個你的按鈕對象的數組,然後迭代該數組並調用setOnClickListener(null); – Simon
您可以使用onclick偵聽器實現,查看被點擊的視圖,更改該視圖的顏色,然後在可能收到點擊時,它不會對它們執行任何操作,直到發生超時。然後,您可以爲每個按鈕使用該偵聽器的單個實例,因此第一次單擊會導致事件,其他所有其他操作都將通過偵聽器方法的無操作路徑,直到發生超時並且偵聽器再次處於活動狀態。 – digitaljoel
沒有人可以說,如果它不皺眉,直到你說你爲什麼要這樣做。 – CaseyB
一旦我們知道你真的想完成什麼,我們也許可以推薦其他解決方案。 – CommonsWare
好吧,長話短說,用戶點擊一個按鈕,然後我改變按鈕的顏色(以指示正確或錯誤)雖然我指示是對還是錯我想禁用所有其他按鈕,直到我改變顏色背部。 – EGHDK