2013-10-06 5 views
3

주 활동에서 Progress Bar을 인스턴스화하고보기에 동적으로 추가하려고합니다. 이 작업을 수행 할 때 표시 줄이 나타납니다.프로그래밍 방식으로 안드로이드 진행률 막대 스타일

위 코드 만 포함 된 새 프로젝트가 시작되었으며 진행률 표시 줄이 올바르게 표시됩니다.

위의 코드에 다음 행을 추가하면 화면이 잠시 공백으로 표시되고 절반 만 표시됩니다. 나는 잠시 동안 빈 막대를 볼 것으로 예상하고 그것은 50 %로 간다.

try { 
    Thread.sleep(2000); 
} catch ...{ 
} 
bar.setProgress(50); 

그러나 이와 같은 코드를 추가하면 바 및 변경 사항이 올바르게 표시됩니다. 내가 너무 자주 changeProg() 모든 전화를 루프로 프로세스를 자동화하려고하면

Button b = new Button(this); 
     b.setText("change bar"); 
     b.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       changeProg(); 
      } 
     }); 

public void changeProg() { 
     switch (state) { 
     case 0: bar.setProgress(100); state = 1; break; 

     case 1: bar.setProgress(127); state = 2; break; 

     case 2: bar.setProgress(33); state = 0; break; 
     } 
    } 

는, 화면은 빈 유지 - 아니 위젯을 모든 디스플레이에, 그들이 XML로 기술 또는 문법적으로 차이가 없습니다 프로 여부.

이 문제가 발생한 이유를 이해하는 데 문제가 있습니다.

답변

0

가 setProgress 팁 :

지정된 값으로 현재의 진행 상황을 설정합니다. 진행률 막대가 불확정 모드 인 경우 아무 것도하지 않습니다.

그래서 당신은 전화를해야 : (false)를

bar.setIndeterminate을;

1

문제를 일으키는 UI 스레드에서 Thread.sleep(2000) (으)로 전화하면 ANR을 생성하는 것으로 보입니다. 진행률 값을 변경하려면 새 스레드 (별도 스레드)를 만들어보십시오.

아래의 예를 참조하십시오

https://stackoverflow.com/a/17758416/3922207

0
ProgressBar pdialog = new ProgressBar(context,null, android.R.attr.yourcustomstyle); 

을 스타일

에 apptheme을 확인
관련 문제