我的代码中有一个倒数计时器。这个倒数计时器应该每隔10毫秒打一次,然后将textview的数字加1,直到达到他们在游戏中得到的用户分数。
它甚至没有达到价值的一半。这是我的代码:
new CountDownTimer(lastScore*10, 10) {
public void onTick(long millisUntilFinished) {
tempScore++;
TextView lg = (TextView)findViewById(R.id.lastgame);
lg.setText("LAST SCORE: " + String.valueOf(tempScore));
lg.setTypeface(eightBitFont);
}
public void onFinish() {
}
}.start();
最后得分是他们在比赛中得到的分数。 tempScore仅用于存储新值以将textview更改为。
编辑:一位用户指出10ms的分辨率可能太差了。 在10ms的分辨率下,我的lastScore值为115,tempScore只增加到46,将它改为30ms,我达到108左右,将它改为50使我更加接近。看起来我将不得不使用100ms刻度值来使它成为正确的值。但对于我想要实现的目标来说,这有点慢。有没有更好的方法去做我想要实现的目标?
答案 0 :(得分:0)
每当你倒计时时,你都会调用昂贵的方法findViewById。 您必须在计时器之外分配它。 所以你的代码可能如下:
TextView lg = (TextView)findViewById(R.id.lastgame);
new CountDownTimer(lastScore*10, 10*1000) { // set to be called each 10 seconds
public void onTick(long millisUntilFinished) {
tempScore++;
lg.setText("LAST SCORE: " + String.valueOf(tempScore));
}
public void onFinish() {
}
}.start();