본문 바로가기

JAVA/Android

[JAVA][Android] ProgressBar 디자인 java 코드로 변경하기 (+ 변경 시 비가시화 처리 되는 현상 해결방법)

만약 Progress의 색상을 바꿔야 하는 경우,

현재 적용 되어있는 drawable파일을 추출하여 변경하려고 할 때,

단일 색상 변경은 가능하지만 startColor, centerColor, endColor (그라데이션 구현) 까지 구현하지는 못한다.

 

그래서 아예 drawable 파일을 2개 만들어놓고 필요할 때 java파일에서 변경해주는데,

 

Drawable progressDrawable = mContext.getResources().getDrawable(R.drawable.progressDrawableFile);

progressBar.setProgressDrawable(progressDrawable);

위와 같이 변경할 경우 손쉽게 변경할 수 있지만

이 경우 간혹 프로그레스 바가 비가시화 처리 되는 경우가 있다.

이런 이슈를 해결하기 위해서는

progressBar.setProgress(0);
Drawable progressDrawable = mContext.getResources().getDrawable(R.drawable.progressDrawableFile);
progressDrawable.setBounds(progressBar.getProgressDrawable().getBounds());
progressBar.setProgressDrawable(progressDrawable);
progressBar.setProgress(timeProgressGage);

위와 같이 작성하면 된다.

 

1. 프로그레스 바의 progress를 0으로 set 해준다

2. 변경할 drawable 파일을 가져온다 (미리 선언해둬도 됨)

3. 기존 프로그레스바의 bounds를 얻어와 변경할 drawble 파일에 setBounds 한다

4. 해당 drawable 파일을 프로그레스 바에 설정한다

5. 시간을 설정한다