我正在創建一個Android應用程序,並遇到了問題。等待一秒鐘的按鈕點擊,如果按鈕沒有點擊通話功能
有12個按鈕。一個按鈕是改變顏色,然後用戶有一秒鐘的時間來點擊按鈕,否則按鈕會變回原來的顏色,而不同的按鈕會改變顏色。
我想重複一遍,直到用戶錯過了一定數量的按鈕點擊。
我發現如何做顏色變化,但我不知道如何做一個無限循環在android或如何等待一秒鐘。
感謝您的幫助。這是我在android應用程序中的第一次嘗試。
我正在創建一個Android應用程序,並遇到了問題。等待一秒鐘的按鈕點擊,如果按鈕沒有點擊通話功能
有12個按鈕。一個按鈕是改變顏色,然後用戶有一秒鐘的時間來點擊按鈕,否則按鈕會變回原來的顏色,而不同的按鈕會改變顏色。
我想重複一遍,直到用戶錯過了一定數量的按鈕點擊。
我發現如何做顏色變化,但我不知道如何做一個無限循環在android或如何等待一秒鐘。
感謝您的幫助。這是我在android應用程序中的第一次嘗試。
您可以通過發佈Runnable對象以在指定延遲的處理程序上運行來實現計時器。如果你不阻止它運行,那麼Runnable會執行。但是,您也可以從之前停止投放:
private static final long ONE_SECOND = 1000L;
private static final int MISS_LIMIT = 10;
int misses = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
final Handler handler = new Handler();
final Runnable timer = new Runnable() {
@Override
public void run() {
// user too late: increment miss counter
if (++misses >= MISS_LIMIT) {
//TODO miss limit reached
finish(); // close this activity
}
}
};
final View btn1 = findViewById(R.id.button1);
final View btn2 = findViewById(R.id.button2);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// change color of other button, and start timer
btn2.setBackgroundResource(R.color.new_color);
handler.removeCallbacks(timer);
handler.postDelayed(timer, ONE_SECOND);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// user clicked button in time: restore color and stop timer
btn2.setBackgroundResource(R.color.orig_color);
handler.removeCallbacks(timer);
}
});
}
謝謝你的幫助! – 2014-11-26 00:55:01
首先創建一個方法是這樣的改變按鈕的顏色..
public void changeButton(int i){
switch (i) {
case 0:
button0.setClickable(true);
button0.setBackgroundResource(color1);
break;
case 1:
button0.setClickable(false);
button0.setBackgroundResource(color2);
button1.setClickable(true);
button1.setBackgroundResource(color1);
break;
case 2:
button1.setClickable(false);
button1.setBackgroundResource(color2);
button2.setClickable(true);
button2.setBackgroundResource(color1);
break;
.....
case 11:
button10.setClickable(false);
button10.setBackgroundResource(color2);
button11.setClickable(true);
button11.setBackgroundResource(color1);
break;
default:
break;
}
}
那麼你就可以實現具有一定的延遲一個Runnable在這樣的循環中調用該方法..
Handler handler=new Handler();
int j=0;
final Runnable r = new Runnable()
{
public void run()
{
changeButton(j);
j++;
// next button color change
if(j<12){
handler.postDelayed(this, 1000);
}
else{
j=0;
handler.postDelayed(this, 1000);
}
}
};
handler.post(r)
檢查:http://stackoverflow.com/questions/22606977/how-can-i-get-button-pressed-time-when-i-holding-按鈕開啓 – 2014-11-25 08:21:57
這會更好這個[SO問題](http://stackoverflow.com/questions/1877417/how-to-set-a-timer-in-android)它描述了一個Timer使用和其他選項來重複運行一些操作。 – 2014-11-25 08:25:07