即时尝试使用android实现计时器,这样它将从给定数字倒计时到0,为此我使用CountDownTimer ...问题是我希望它每1毫秒更新一次似乎是textView当我尝试使用setText时,我用来表示时间是慢的...例如,如果我从20000启动计时器并且作为countDownInterval启动1毫秒,则当文本视图达到大约19000时,它将停止更改。
这是我的代码:
currTimer=new CountDownTimer(20000,10) {
@Override
public void onTick(long millisUntilFinished) {
scoreBoard.setCurrMilliTime(scoreBoard.getCurrMilliTime()-10);
textView.setText(Integer.toString(scoreBoard.getCurrMilliTime()));
}
@Override
public void onFinish() {
scoreBoard.setCurrMilliTime(scoreBoard.getCurrMilliTime()-10);
textView.setText(Integer.toString(scoreBoard.getCurrMilliTime()));
}
}.start();
答案 0 :(得分:2)
我刚试过这个:
final TextView textView1 = (TextView) findViewById(R.id.textView1);
new CountDownTimer(20000,10) {
@Override
public void onTick(long millisUntilFinished) {
textView1.setText(String.format("%d : %d :%d",
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)),
TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) -
TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)))
));
}
@Override
public void onFinish() {
}
}.start();
并且工作完美,希望这会有所帮助,虽然我不认为“10”的步骤足够平均,但试试100
答案 1 :(得分:0)
使用一个动画,它可以在屏幕上每一帧都改变一些东西,这对你正在做的事情来说是完美的。 从https://stackoverflow.com/a/24389011/845092
公然展示的样品 ValueAnimator animator = new ValueAnimator();
animator.setObjectValues(0, count);
animator.addUpdateListener(new AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
view.setText(String.valueOf(animation.getAnimatedValue()));
}
});
animator.setEvaluator(new TypeEvaluator<Integer>() {
public Integer evaluate(float fraction, Integer startValue, Integer endValue) {
return Math.round(startValue + (endValue - startValue) * fraction);
}
});
animator.setDuration(1000);
animator.start();