让分数计数器像android中的计时器一样工作

时间:2016-05-24 15:02:25

标签: java android android-studio handler android-handler

我是Java新手,正在开发我的第一个应用程序。我希望得分像计时器一样显示,直到达到玩家的分数。这是我写的代码。

Derived

它似乎不起作用。当我运行它时,应用暂停一段时间然后显示最终得分。它没有在中间步骤中显示它。我从未使用过这样的基于时间的功能。有人能帮我理解为什么会这样吗?此外,有人可以给我链接,我可以更多地阅读postDelayed方法。我无法从developer.android网站了解,因为我对它很新。

谢谢

2 个答案:

答案 0 :(得分:2)

  int temp_score = 0;
 Timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
       runOnUiThread(new Runnable() {

            @Override
            public void run() {
                scoreTextView.setText(score_string);
            }
        });


       temp_score++;
    }
  }, 0, UPDATE_INTERVAL);

答案 1 :(得分:1)

试试这个:

Handler mHandler = new android.os.Handler();
int temp_score = 0;
int i = 0;
while(temp_score<=score){
    final String score_string = "" + temp_score++;
    mHandler.postDelayed(new Runnable(){
        public void run() {
            scoreTextView.setText(score_string);
        }
    }, ++i*1000);
}

处理程序是与单个线程相关的基本对象,能够发送消息,向其发布指令(Runnables)。 postDelayed()是指定线程上的延迟命令发布。检查链接:https://developer.android.com/reference/android/os/Handler.html

你的原始解决方案不起作用,因为你的while循环一直持续到它找到玩家的分数并且它为每一步创建一个延迟的运行但是它们一个接一个地运行如此之快,所以你只会注意到最后一个变化。