递增毫秒直到完成(倒计时)-Android
当我点击“如何增加计时器”时,我尝试了各种方法,但它们都只是启动了一个新的计时器。我想随着时间的推移增加它 剩余时间:5秒递增毫秒直到完成(倒计时)-Android,android,increment,countdowntimer,Android,Increment,Countdowntimer,当我点击“如何增加计时器”时,我尝试了各种方法,但它们都只是启动了一个新的计时器。我想随着时间的推移增加它 剩余时间:5秒 "on_Press_Some_Button();" millisUntilFinished+=2000 剩余时间:7秒如果您需要每隔x毫秒发生一次事件,您可以使用TimerTask: time = 0; //Declare the timer t = new Timer(); //Set the schedule function and
"on_Press_Some_Button();"
millisUntilFinished+=2000
剩余时间:7秒如果您需要每隔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);
我将在包装倒计时器本身的基础上采用另一种方法
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();
}
};
}
}
希望它适合你的需要 你能解释清楚一点吗?
CountDownTimer
没有onIncrement()
。这是“倒计时”而不是“倒计时”。如果需要,您当然可以在onTick()
中增加一些变量。否则,您可能想使用其他东西,具体取决于您想要什么。可能是一个while循环
,它增加一个变量,并在需要时停止…“按一些按钮”
我想要毫秒直到完成+=3000
如果我没有错,上面有一些不完整的代码,但在完成后它会正常工作。以下是onIncrement(long millis)中的更改:public void onIncrement(long millis){millisInFuture+=millis;recreateCounter(millisInFuture,countDownInterval);cdt.start()}另外,cancel()的包装方法将有帮助:public void cancel(){cdt.cancel();}
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();