상상하라 그리고 현실로 만들어라.

상상하는 모든 것이 미래다.

Kotlin과 Android/Android

코틀린으로 안드로이드 레이팅바(RatingBar) 한방에 끝내기!

월터제이(Walter J) 2020. 11. 9. 09:00

안녕하세요, 반갑습니다!

 

게임을 하거나

음악을 듣거나

상품을 구입하고 우리는 리뷰를 남깁니다.

그리고 상품이 얼마나 만족스러웠는지 점수도 줄 수 있습니다.

 

쇼핑몰, 앱스토어 등에서 정말 흔하게 볼 수 있는 별점!

안드로이드에서 기본적으로 제공하는 기능이 있습니다.

바로,

 

 

레이팅바(Rating Bar)

 

 

 

평가 점수를 주는데 가장 직관적인 UI 가 아닌가 싶습니다.

사용자는 손 쉽게 원하는 별 개수를 클릭 및 드래그하면 되니까요.

 

이 레이팅바도 프로그래스바, 시크바 등과 마찬가지로 간단하게 구현할 수 있습니다.

같이 만들어보시죠.

간단하게 만들 수 있습니다.

 

1. .xml 파일에 레이팅바 배치하기

저는 심플하게 레이팅바(RatingBar) 와 점수를 나타내는 TextView 만 배치했습니다.

<RatingBar
    android:id="@+id/ratingBar"
    style="@android:style/Widget.DeviceDefault.Light.RatingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="12dp"
    android:isIndicator="false"    //사용자 사용 유무(true:불가, false:가능)
    android:numStars="5"    //별 개수
    android:rating="0"    //시작 별 개수
    android:stepSize="2"    //변경 범위, 별 5일때 2라면 범위가 2.5개
/>

레이팅 바를 사용하면 주로 사용하게 되는 속성들이 있습니다.

1. isIndicator : 사용자가 별점을 바꿀 수 없도록 합니다. true 로 설정하면 별점을 줄 수가 없네요

2. numStars : 별 개수 입니다. 기본이 5개입니다.

3. rating : 별 개수를 미리 설정할 수도 있습니다.

4. stepSize : 변경되는 범위를 지정합니다. 보통 0.5 또는 1로 설정합니다.

단, 이 설정은 비율로 지정이 됩니다.

만약 별 5개일때 stepSize 를 2로 설정한다면, 별은 5/2 가 되어 2.5 만큼 움직이게 됩니다.

 

저는 아래와 같이 간단히 점수를 표시할 수 있는 텍스트뷰(TextView) 와 레이팅바(RatingBar)를 배치했습니다.

 

2. 레이팅바 크기 조절하기

이 레이팅바(RatingBar)의 기본 크기는 너무 큽니다.

앱에도 쉽게 사용하기가 힘든 크기죠.

 

하지만, 다행스럽게도 스타일을 변경함으로 인해서 이 크기를 조절할 수가 있습니다.

Design 화면에서 Style의 값을 아래와 같이 3가지로 설정해 줄 수 있습니다.

 

  • 기본 크기인 RatingBar
  • 조금 작은 RatingBar.Indicator
  • 완전 작은 RatingBar.Small

 

3. 레이팅바에 Listener 연결하기

이제 이 레이팅바가 동작할 수 있도록 Listener() 를 연결해 보겠습니다.

너무 쉬워서 큰 일이에요.

ratingBar.setOnRatingBarChangeListener { ratingBar, rating, fromUser ->
    starScore.text = "${rating}점"
}

 

끝났습니다.

setOnRatingBarChangeListener { } 만 연결해서 rating 으로 전달되는 값을 가져오기만 하면 됩니다.

 

 

 

어떠신가요?

이제 레이팅바(RatingBar) 를 이용해서 사용자로부터 평점을 받을 수 있고,

상품별 평점을 줄 수도 있게 되었습니다!

 

 

 

그럼 전 다른 유용한 기능을 또 준비해보겠습니다.

감사합니다.

반응형