雖然onTick我如何增加計時器,嘗試了各種事情,但他們都只是開始一個新的計時器。我想隨着它的增加而增加它。Incrementing millisUntilFinished(Countdowntimer) - Android
剩餘時間:5秒
"on_Press_Some_Button();"
millisUntilFinished+=2000
剩餘時間:7秒
雖然onTick我如何增加計時器,嘗試了各種事情,但他們都只是開始一個新的計時器。我想隨着它的增加而增加它。Incrementing millisUntilFinished(Countdowntimer) - Android
剩餘時間:5秒
"on_Press_Some_Button();"
millisUntilFinished+=2000
剩餘時間:7秒
我將基於包裝CountdownTimer本身而採用不同的方法。
public abstract class MyCountDownTimer {
private CountDownTimer cdt;
private long millisInFuture;
private long countDownInterval;
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
this.millisInFuture = millisInFuture;
this.countDownInterval = countDownInterval;
recreateCounter(millisInFuture, countDownInterval);
}
public abstract void onFinish();
public abstract void onTick(long millisUntilFinished);
public void start(){
cdt.start();
}
private void setMillisInFuture(long millisInFuture){
this.millisInFuture = millisInFuture;
}
public void onIncrement(long millis){
millisInFuture += millis;
recreateCounter(millisInFuture, countDownInterval);
}
private void recreateCounter(long millisInFuture, long countDownInterval){
if(cdt != null){
try {
cdt.cancel();
} catch (Exception e) {
}
}
cdt = new CountDownTimer(millisInFuture, countDownInterval) {
@Override
public void onTick(long millisUntilFinished) {
setMillisInFuture(millisUntilFinished);
MyCountDownTimer.this.onTick(millisUntilFinished);
}
@Override
public void onFinish() {
MyCountDownTimer.this.onFinish();
}
};
}
}
希望它適合您的需求!
感謝這個作品完美! – Jtino
如果我沒有錯,上面有一些不完整的代碼,但是完成後它可以正常工作。 以下是onIncrement(long millis)的變化: public void onIncrement(long millis){milli_InFuture + = millis; recreateCounter(millisInFuture,countDownInterval);另外,用於cancel()的包裝方法將有助於: public void cancel(){ cdt.cancel(); } – binaryKarmic
,如果你需要一些事情發生每隔x米利斯,你可以使用TimerTask的這樣:
time = 0;
//Declare the timer
t = new Timer();
//Set the schedule function and rate
t.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
runOnUiThread(new Runnable()
{
@Override
public void run()
{
//do what u need to
}
});
}
},
//Set how long before to start calling the TimerTask (in milliseconds)
0,
//Set the amount of time between each execution (in milliseconds)
1000);
CountDownTimer count = new CountDownTimer(1000000, 1000) {
public void onTick(long millisUntilFinished) {
// this will decrement 100 to 1
int seconds = (int) (millisUntilFinished/1000) % 100;
int minutes = (int) ((millisUntilFinished/(1000 * 60)) % 60);
int hours = (int) (((millisUntilFinished/(1000 * 60)) % 60))%60;
// this will increment 1 to 100
int incrementSeconds = 100 - seconds;
}
public void onFinish() {
}
};
count.start();
你能解釋一下好嗎? 'CountDownTimer'沒有'onIncrement()'。這是一個「倒數」而不是「數」。如果你願意,你當然可以在'onTick()'中增加一些變量。否則,你可能想要使用其他東西,具體取決於你想要的東西。也許一個'while循環',增量變量,並停止當你想... – codeMagic
'「on_Press_Some_Button」'我想'millisUntilFinished + = 3000' – Jtino