2

我想在可变文本中显示 1 到 100。我喜欢使用 sleep() 函数,这样它看起来就像从 1 增加到 100。我的代码是

for(int i= 0;i<100;i++) {
    scorelevel.setText(String.valueOf(i));
    try{
        Thread.sleep(1000);
    }catch (InterruptedException e) {
        e.printStackTrace();
    }
}

但它没有正确显示。任何帮助或建议表示赞赏。

4

4 回答 4

5

不要阻塞 UI 线程,AsyncTask而是使用

于 2012-06-25T11:07:42.703 回答
0

使用TimerTimerTask执行任何基于时间的任务。

于 2012-06-25T11:12:42.700 回答
0

您可以使用 runOnUiThread 启动计数器以将 textView 更新为:

private boolean mClockRunning=false;
private int millisUntilFinished=0;
public void myThread(){
            Thread th=new Thread(){
             @Override
             public void run(){
              try
              {
               while(mClockRunning)
               {
               Thread.sleep(1000L);// set time here for refresh time in textview
               YourCurrentActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                 // TODO Auto-generated method stub
                     if(mClockRunning)
                     {
                     if(millisUntilFinished==100)
               {
               mClockRunning=false;
               millisUntilFinished=0;
                }
                else
                {
               millisUntilFinished++;
               scorelevel.setText(String.valueOf(millisUntilFinished));//update textview here

               }
             }

            };
          }
              }catch (InterruptedException e) {
            // TODO: handle exception
             }
             }
            };
            th.start();
           }
于 2012-06-25T11:13:41.167 回答
0

您也可以使用TimerTask链接)。

于 2012-06-25T11:16:25.823 回答