안녕하세요 오늘은 프로젝트를 진행하면서 사용한 SeekBar를 포스팅 하는 겸 SeekBar와 비슷한 진행 상태를 표시하는 뷰들에 대해 함께 포스팅 해보겠습니다.

ProgressBar는 사용자에게 어떤 작업이 진행 중임을 알려주는데 사용되는 뷰입니다. 진행 상태를 bar 또는 원 형태로 제공해줍니다. bar형태는 어느 정도 진행되었는지를 확인할 수 있고 원 형태는 현재 진행중이라는 상태만 보여줍니다.
ex) 파일 업로드, 다운로드 등
1.Determinate ProgressBar : 작업의 시작과 끝이 명확하고, 진행 상태를 백분율로 표현할 수 잇을 때 사용합니다.
2.Indeterminate ProgressBar : 작업의 총 진행 시간이나 완료 시점을 알 수 없을 때 사용합니다. 이 경우 ProgressBar는 끊임없이 애니메이션을 통해 작업이 진행 중임을 표시합니다.
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="100" //범위를 지정
android:progress="20" //시작 지점을 지정
/>
일반적으로 Progress는 백그라운드 스레드나 비동기 태스크와 함께 사용됩니다. 예를 들어,
파일을 다운로드 하는동안 ProgressBar를 사용하여 현재 진행 상태를 표시할 수 있습니다.
new AsyncTask<Void, Integer, Void>() {
@Override
protected Void doInBackground(Void... voids) {
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(100); // 0.1초 대기
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(i); // 진행 상태 업데이트
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressBar.setProgress(values[0]); // ProgressBar 업데이트
}
}.execute();
SeekBar는 사용자가 드래그하는 슬라이더를 통해 값을 선택할 수 있는 UI 요소 입니다.
주로 음량 조절이나 밝기 조절 등에 자주 사용됩니다.

<SeekBar
android:id="@+id/location_seekbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:thumb="@drawable/custom_seekbar_thumb"
android:progressDrawable="@drawable/custom_seekbar_progress"
android:layout_weight="1" />
<!--thumb : seekbar 진행 아이콘 -->
<!--progressDrawable : seekbar 진행 아이콘 -->
위의 코드 중 thumb와 progressDrawable은 원하는대로 커스텀을 하기 위해서 사용합니다.
SeekBar의 값이 변경될 때 마다 액션을 수행하려면 'setOnSeekBarChangeListener' 메서드를 사용하여 리스너를 설정합니다.
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// SeekBar의 진행 상태가 변경되었을 때 호출됩니다.
// `progress`는 현재 진행 상태이며, `fromUser`는 사용자에 의한 변경인지를 나타냅니다.
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 사용자가 SeekBar를 터치하여 드래그를 시작할 때 호출됩니다.
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 사용자가 SeekBar의 드래그를 끝냈을 때 호출됩니다.
}
});
RatingBar는 별점을 받는 등의 평점을 받기 위한 UI 요소입니다.

<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="3"
android:stepSize="0.5"/>
RatingBar의 동작 방식과 모양을 정의하는 데 사용되는 주요 속성들은 다음과 같습니다:
android:numStars: RatingBar에 표시될 최대 별 개수를 설정합니다.
android:rating: 현재 RatingBar의 평점을 설정합니다.
android:stepSize: RatingBar의 최소 단위를 설정합니다. 예를 들어, 0.5로 설정하면 반 별씩 평점을 줄 수 있습니다.
RatingBar의 평점이 변경될 때마다 액션을 수행하려면 'setOnRatingBarChangeListener' 메서드를 사용하여 리스너를 설정합니다.
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
// RatingBar의 평점이 변경되었을 때 호출됩니다.
// `rating`은 현재 평점이며, `fromUser`는 사용자에 의한 변경인지를 나타냅니다.
}
});
항상 자주 보던 UI 들이지만 막상 구현하려니 SeekBar의 이름을 몰라서 고생했습니다...
UI 공부도 열심히 해야할 필요성을 느끼며 포스팅 마무리하겠습니다.