안드로이드 개발에서 서버로부터 데이터를 불러올 때, 네트워크 상황이 좋지 않다면 금방 불러올 수 없을 것이다. 시간이 어느 정도 걸린다. 또한, 불러오는 데이터 중 사진, 영상이 많거나 데이터의 양이 많다면 시간이 오래 걸린다.

이처럼 시간이 오래 걸리는 작업을 아무런 동작 없이 그냥 냅두면 사용자는 빈 화면을 보다가 갑자기 나타난 화면에 좋지 않은 경험을 할 것이다. 그래서 이를 해결하기 위한 방법은 내가 생각했을 때는 두가지가 있다.

아마도 이 글은 두 Part로 나뉘어서 쓸 것 같다. 이번에는 Progress Bar를 이용한 로딩 방법을 다뤄보고 다음에는 loaderViewLibrary를 이용한 방법을 다룰 예정이다.

Progressbar

사용방법은 정말 간단하다. 그냥 xml에 정의해서 사용하면 된다. 아래 xml 코드를 보자.

1
2
3
4
5
6
7
8
9
<ProgressBar
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

이렇게 정의하면 빨간색의 ProgressBar를 볼 수 있다. 원형이 기본 형태인 것 같다. 색상도 빨간색이 기본으로 설정되어 있다. 하지만, 이 빨간색은 여러분이 개발하고 있는 앱의 색상과 맞지 않을 것이다. 그래서 변경하려는 사람이 많다. 필자도 변경하려고 구글링을 좀 해봤다.

여러 방법이 있지만, 가장 단순한 방법은 다음 코드 한 줄을 추가하는 것이다.

1
android:indeterminateTint="@color/fe_fu_main"

이 속성이 무엇인지는 Android Developer 문서에 설명되어 있다. 사진을 아래와 같이 첨부했다.

해석해보면 ProgressBar에 적용할 색상이라고 한다. indeterminate가 뭔지 몰랐는데 불확정의라는 뜻을 가진다. ProgressBar가 불확정에서 확정으로 되는 동안 로딩하기 위해 쓰이는 것이라 이런 이름을 붙이지 않았을까 추측해본다. (물론 나의 생각!!)

저 속성을 통해서 원하는 색상을 지정하면 사용자가 원하는 색상을 사용할 수 있다. 직접 drawable 파일을 만들어서 커스텀하는 방법도 있는데, 이는 디자인 자체에서 조금 다르면 커스텀해서 사용해도 좋을 것 같다. 다음의 스택 오버플로우 질문을 보면 답변에 두 방식 모두 나와있다. -> https://stackoverflow.com/questions/5337613/how-to-change-color-in-circular-progress-bar/17785769

사용해보기

참고