2013-10-03 2 views
0

나는 채우기 레벨이 다른 진행 막대를 표시한다고 가정하는 간단한 활동이 있습니다. 학생이 내 모바일 응용 프로그램에서 연습 테스트를 수행 한 후 진행률 표시 줄이있는이 활동이 표시됩니다. 따라서 학생이 색상이 채워진 모든 파란색을 표시하면 통과 한 바가 표시됩니다. 평균 성능이라면 색상은 녹색으로 절반 채워집니다. 성능이 좋지 않으면 색상이 완전히 빨간색으로 약간 채워집니다.진행률 막대 레벨 변경

색상은 아래이지만 나를 위해 일하는

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

당신은 progessbar 및 더 많은 코드를 xml로 제공 할 수 있습니다. – 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

입니다. 나쁘다. Runnable의 엄청난 금액이 spooned 될 것입니다. –

0
변경

이것이 내가 정상적으로하는 방법입니다.

나는 Handler를 종료하고 새로 고침 상태를 easly 제어 할 수있는 사용자 지정 메서드를 추가합니다.

새로 고침주기를 easly 및 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