만약 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. 시간을 설정한다
'JAVA > Android' 카테고리의 다른 글
[JAVA][Android] 액티비티 종료 전 주요 데이터를 Bundle에 저장하여 재활용하기 (0) | 2022.06.21 |
---|---|
[JAVA][Android] ImageView 영역에 원하는 radius값을 반영하는 setOutlineProvider (0) | 2022.06.21 |
[JAVA][Android] ProgressBar 부드럽게 증가/감소 시키기 : ObjectAnimator 활용 (0) | 2022.05.18 |
[JAVA][Android] 로컬 파일(png, webp 등)의 Uri 추출하기 (0) | 2022.05.17 |
[JAVA][Android] webp 동영상(gif) 재생 횟수 정하기 (1) | 2022.05.17 |