我开始为足球比赛写倒数计时器。下面的代码一次增加1秒到30分钟。我怎么能倒计时而不是数数;
//Countdown clock button
Button counterBtn = (Button) view.findViewById(R.id.matchCountDownBtn);
counterBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new CountDownTimer(1800000, 1000){
public void onTick(long millisUntilFinished){
Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
counterBtn.setText(String.valueOf(counter));
counter++;
}
public void onFinish(){
Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
counterBtn.setText("FULL TIME");
}
}.start();
}
});
由于CountDownTimer的millisInFuture似乎在结束时间开始,我很困惑这可以倒计时而不是计数。
任何帮助表示感谢。
答案 0 :(得分:1)
millisUntilFinished
表示从调用start()
到倒计时结束并调用onFinish()
之后的未来毫秒数。更有意义的是,您将其用作显示剩余时间的实际值,而不是使用counter
。
考虑到这一点,onTick()
方法可以修改如下以显示倒计时 -
public void onTick(long millisUntilFinished){
Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
counterBtn.setText("seconds remaining: " + millisUntilFinished / 1000);
}
答案 1 :(得分:0)
时
counter--;
你在找什么?
答案 2 :(得分:0)
完成了工作;
Button counterBtn = (Button) view.findViewById(R.id.matchCountDownBtn);
counterBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new CountDownTimer(70000, 1000){
public void onTick(long millisUntilFinished){
long l = millisUntilFinished / 1000;
int i = (int) l;
Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
counterBtn.setText(secondsToString(i));
}
public void onFinish(){
Button counterBtn = (Button) getView().findViewById(R.id.matchCountDownBtn);
counterBtn.setText("FULL TIME");
}
}.start();
}
});
我用于格式化的方法是;
private String secondsToString(int pTime) {
return String.format("%02d:%02d", pTime / 60, pTime % 60);
}