我一直在寻找一种方法来创建一个以mm:ss:SS格式计数的计时器,并且在我的生活中无法找到一种方法。我有一个计时器通过一个Handler和一个Runnable运行,但时间关闭,并花了大约2.5秒做一个“秒”。我也需要这个计时器才能倒计时!
任何人都可以给我任何资源或代码片段来研究这个,因为它是我正在编写的应用程序的重要部分。
这是我正在使用的一些代码
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
/* do what you need to do */
testMethod();
/* and here comes the "trick" */
handler.postDelayed(this, 10);
}
};
public void testMethod()
{
// Log.d("Testing", "Test");
final TextView timeLabel = (TextView)findViewById(R.id.timeString);
count++;
seconds = (int)(count / 100);
final String str = ""+count;
runOnUiThread(new Runnable() {
public void run() {
timeLabel.setText("" + seconds);
// Log.d("Time", "" + count);
}
});
}
的Ta!
答案 0 :(得分:2)
通过扩展CountDownTimer类来创建小型自定义类,然后添加整数或长类型然后递增它,因为在这种情况下每个滴答是1秒(整数)
public class TimeCounter extends CountDownTimer {
// this is my seconds up counter
int countUpTimer;
public TimeCounter(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
countUpTimer=0;
}
@Override
public void onTick(long l) {
//since each tick interval is one second
// just add 1 to this each time
myTextView.setText("Seconds:"+countUpTimer);
countUpTimer = countUpTimer+1;
}
@Override
public void onFinish() {
//reset counter to 0 if you want
countUpTimer=0;
}
}
TimeCounter timer = new TimeCounter(whenToStopInSeconds*1000, 1000);
这应该让你开始,在你的情况下使用long而不是整数
countUpTimer = countUpTimer+1000
countUpTimer类型并根据您的时间进行解析
答案 1 :(得分:0)
我建议您使用java.util.Timer
和java.util.TimerTask
API,而不是使用处理程序。使用Timer的void scheduleAtFixedRate()
方法,该方法基本上在固定的时间间隔后执行任务。 Handler
方法很可能使用固定延迟执行。