2013-10-03 74 views
0

我有一個簡單的活動,假設顯示具有不同填充級別的進度條。在學生對我的移動應用程序進行練習測試後,將顯示帶進度條的活動。因此,演示欄會顯示學生是否通過了顯示全部藍色的填充顏色。如果這是一個平均的表現。顏色是一半綠色填充。如果表現不佳,則顏色會完全變紅,並有輕微的顏色填充。更改進度條級別

我的一些代碼來設置填充顏色爲以下但不工作

if(grade.equals("passed")){ 
     setProgress(100); 
    } 
    else{ 
     setProgress(50); 
    } 
+0

你可以詳細說明給你的xml的progessbar和更多的代碼... – Piyush

+0

http://www.tiemenschut.com/how-to-customize-android-progress-bars/這是你在找什麼 –

回答

0

下一個樣品爲我工作:

private void animate() { 
    mProgressStatus = 25; 
    final ProgressBar mProgress = (ProgressBar) findViewById(R.id.progress); 
    new Thread(new Runnable() { 
     public void run() { 
      while (mProgressStatus < 100) { 
       mHandler.post(new Runnable() { 
        public void run() { 
         mProgress.setProgress(mProgressStatus); 
        } 
       }); 
      } 
     } 
    }).start(); 
} 

,當我改變mProgressStatus進度條改變填充

+0

this不好。就像這樣一個巨大的Runnable將被播出 –

0

這是我如何正常地做到這一點。

我放手處理程序並添加自定義方法,讓我可以輕鬆控制刷新狀態。

您還可以輕鬆地控制刷新週期和dinamically。

public class ProgressHandler extends Handler { 

    private static final int START = 0; 
    private static final int STOP = 1; 
    private static final int REFRESH = 2; 

    public void start() { 
     removeMessages(STOP); 
     sendEmptyMessage(START); 
    } 

    public void stop() { 
     removeMessages(START); 
     removeMessages(STOP); 
    } 

    @Override 
    public void handleMessage(Message msg) { 
     super.handleMessage(msg); 

     switch (msg.what) { 
     case REFRESH: 
      mProgress.setProgress(mProgressStatus); 

      if(mProgressStatus < 100) 
       sendEmptyMessageDelayed(REFRESH, 100 /* Or how much you need */); 

      break; 
     case START: 
      sendEmptyMessage(REFRESH); 
      break; 
     case STOP: 
      removeMessages(REFRESH); 
      break; 
     default: 
      break; 
     } 
    } 
}; 

我認爲這是最好的方式之一,甚至更好,然後用Timer因爲它讓你自定義的行爲多一點。

+0

對不起,我不認爲你明白這個問題 – user2754532

+0

我不需要一個動態變化的進度條。我需要一個進度條,當用戶完成對我的應用程序的練習測試時,它會顯示一個級別。所以有不同的層次。通過級別。一個失敗的水平和一個平均表現的水平都是不同的顏色 – user2754532