본문 바로가기

Android

[Android] RatingBar 실습

안드로이드 앱에서 별점을 주는 형태의 앱을 만들기 위해

RatingBar을 해볼 것이다.

RatingBar을 3개를 두고

Button 2개를 둔 후 증가 버튼을 누르면 별이 늘어나고

감소 버튼을 누르면 별이 감소할 것이다.

위와 같이 RatingBar을 두면 별의 개수가 화면에 끝까지 만들어지게 되니

각 RatingBar의 크기를 wrap_content로 두면

원하는 별 5개로 배치된다.

각 RatingBar을 특이하게 만들어볼 것인데

먼저 가운데 RatingBar의 스타일을 small로 두고

numStars = 별의 개수(10개)

stepSize = 하나 증가할 때마다 몇 개씩 증가할 것인지(1개)

실행해보면 모양이 작아지고 개수가 10개로 증가한 것을 볼 수 있다.

또 아래의 RatingBar는

rating = 기본으로 가지고 있을 별의 개수(2개)

stepSize = 하나 증가할 때마다 몇 개씩 증가할 것인가(0.5개)

이제 증가 버튼을 누르면 별들이 색으로 칠해질 것이다.

btnInc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ratingBar1.setRating(ratingBar1.getRating()+ratingBar1.getStepSize());
                ratingBar2.setRating(ratingBar2.getRating()+ratingBar2.getStepSize());
                ratingBar3.setRating(ratingBar3.getRating()+ratingBar3.getStepSize());
            }
        });

btnInc를 클릭하게 되면

RatingBar의 setRating = 별의 개수를 세팅한다.

ratingBar1.getRating() = 지금 상태의 별의 개수를 얻어온다.

ratingBar1.getStepSize() = 별이 몇 개씩 증가할 것인지에 대한 정보를 가지고 온다.

이 두 값을 더하는 것으로 정해진 개수만큼 지금 가지고 있는 개수에서 증가할 것이다.

감소시키는 것은 더하는 것을 빼기만 하면 되는 일이다.

처음 실행했을 때.

3번째 RatingBar는 2개를 기본으로 가지고 있기 때문에 처음부터 2개가 있는 모습이다.

증가를 누르면 각 설정해둔

StepSize 만큼 증가한다.

감소를 누르면 설정해둔

StepSize 만큼 감소한다.

모두 꽉 찼을 때 증가를 눌러도 반응이 없고

모두 비워져있을 때 감소를 눌러도 반응이 없다.