2012-01-03 116 views
3

我首先想說的是,我經常使用google來查找時間流逝時自動填充的進度條。我發現的所有結果,其中線程Asynctask。作爲Android的新手,我認爲使用處理進度條更新的額外處理程序可以更輕鬆地完成此任務。ProgressBar與Android應用程序中的處理程序倒計時

但是,我沒有找到任何人這樣做我的方式。它可能違反Android規則嗎?例如,我可以同時使用多個處理程序嗎?

我的代碼如下所示:

public void restarttimebar() 
{ 
    stoptimebar(); 
    for(int i=1;i<12;i++) 
    { 
    Message msg = timebarhandler.obtainMessage(0,i,0); 
    timebarhandler.sendMessageDelayed(msg, i*250); 
    } 

}; 

public void stoptimebar() 
{ 
    timebarhandler.removeMessages(0); 
    Message msg = timebarhandler.obtainMessage(0,0,0); 
    timebarhandler.sendMessage(msg); 
}; 

Handler timebarhandler = new Handler() 
{ 
    @Override 
    public void handleMessage(Message msg) 
    { 
     ProgressBar progressbar = (ProgressBar)findViewById(R.id.timebar); 
     if (msg.arg1 == 0) 
     { 
      progressbar.setProgress(0); 
     } 
     if (msg.arg1 > 0) 
     { 
      progressbar.setProgress(msg.arg1*9); 
     } 
    } 
}; 

現在,人們可以調用restarttimebar();以(重新)啓動進度條。它將在每0.25秒增加3秒鐘。任何言論非常感謝!

編輯:還添加了stoptimebar();停止進度條。此外,一個進度條的標準大小是100.所以我只是做了十二次更新時間9.它幾乎是100;)在我的應用程序中,酒吧不必非常精確。

+0

沒有評論?我在真實設備(LG 2x Speed)上以及Eclipse的模擬器上測試了它,並且它工作正常。然後我保持這種方式:) 可以對谷歌這種事情的人有用。 (7小時前有些地方是晚上,所以他們可能沒有看到這個帖子:P) – schijndelvanjos 2012-01-03 20:16:41

回答

0

我想我更新進度條的方法可以被看作是正確的。因此,對於任何使用Google並且存在相同問題的人:在問題中使用代碼!

0

據我所知,你創建的線程和Asynctasks(非UI線程)不應該觸摸UI的東西,如你的進度條。如果您需要將任務與進度條進行通信,請使用Asynctask並確保在onPostExecute()中完成與UI相關的操作。這個方法也將被主UI線程調用。