상세 컨텐츠

본문 제목

[Android]RatingBar 이벤트

Android 개발

by mobile 2013. 3. 31. 21:41

본문

반응형

RatingBar는 주로 안드로이드의 주소록과 같이 사용자 등급용을 많이 사용된다. 비율바는 별의 크기나 방법에 따라 자체적으로 3가지 형태를 제공한다.


사용자가 위의 두개의 별을 눌렀을 때 누른 위치에 따라 별의 색상이 변화하고 선택한 비율에 따른 비율과 별의 수를 나타내는 프로그램

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

<RatingBar android:id="@+id/ratingbar1"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:numStars="3"

   android:rating="2.5" > 

</RatingBar>

<RatingBar android:id="@+id/ratingbar2"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:numStars="5"

   android:rating="2.25" >

</RatingBar>

<LinearLayout 

   android:layout_width="match_parent"

   android:layout_height="wrap_content"

   android:layout_marginTop="10dip" >

   <TextView android:id="@+id/rating"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content" />

   <RatingBar android:id="@+id/small_raingbar"

       style="?android:attr/ratingBarStyleSmall"

       android:layout_marginLeft="5dip"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_gravity="center_vertical" />

</LinearLayout>

<RatingBar android:id="@+id/indicator_ratingbar"

   style="?android:attr/ratingBarStyleIndicator"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:layout_gravity="center_vertical" />

</LinearLayout>


import android.app.Activity;

import android.os.Bundle;

import android.widget.RatingBar;

import android.widget.TextView;


public class ExRatingBar extends Activity implements RatingBar.OnRatingBarChangeListener {

RatingBar mSmallRatingBar;

RatingBar mIndicatorRatingBar;

TextView mRatingText;


@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.ratingbar_ex_01);

mRatingText = (TextView) findViewById(R.id.rating);

mIndicatorRatingBar = (RatingBar) findViewById(R.id.indicator_ratingbar);

mSmallRatingBar = (RatingBar) findViewById(R.id.small_raingbar);

((RatingBar)findViewById(R.id.ratingbar1)).setOnRatingBarChangeListener(ExRatingBar.this);

((RatingBar)findViewById(R.id.ratingbar2)).setOnRatingBarChangeListener(ExRatingBar.this);

}


@Override

public void onRatingChanged(RatingBar ratingBar, float rating,

boolean fromUser) {

// TODO Auto-generated method stub

final int numStars = ratingBar.getNumStars();

mRatingText.setText(getString(R.string.ratingbar_rating) + " " + rating + "/" + numStars);

if(mIndicatorRatingBar.getNumStars() != numStars) {

mIndicatorRatingBar.setNumStars(numStars);

mSmallRatingBar.setNumStars(numStars);

}

if(mIndicatorRatingBar.getRating() != rating) {

mIndicatorRatingBar.setRating(rating);

mSmallRatingBar.setNumStars(numStars);

}

final float ratingBarStepSize = ratingBar.getStepSize();

if(mIndicatorRatingBar.getStepSize() != ratingBarStepSize) {

mIndicatorRatingBar.setStepSize(ratingBarStepSize);

mSmallRatingBar.setStepSize(ratingBarStepSize);

}

}

}


android:numStars 속성은 비율바에서 나타내는 별의 수를 가리킨다. 그리고 android:rating 속성은 현재 별에서 차지하는 범위를 나타내는데 0부터 시작하여 앞의 android:numStars 속성 값보다 같거나 작아야 한다. 

android:stepsize 속성은 변화되는 단위를 가르킨다.


비율바에서 사용할 수 있는 사용자 스타일

- ratingBarStyle : 가장 큰 크기의 별모양을 나타낸다.(디폴트)

- ratingBarStyleIndicator : 중간 크기의 별모양을 나타낸다.

- ratingBarStyleSmall : 작은 크기의 별모양을 나타낸다.


setNumStars() 메서드는 비율바에서 제공하는 별의 개수를 지정한다. setRating() 메서드는 비율바에 등급을 나타낸다. setStepSize() 메서드는 사용자가 눌렀을 때 변화되는 단위를 가르킨다.


[결과]


반응형

'Android 개발' 카테고리의 다른 글

[Android] 이벤트 핸들러  (0) 2013.04.03
[Android]프로그레스바 이벤트  (0) 2013.03.31
[Android] SeekBar event  (0) 2013.03.24
[android]라디오 그룹 이벤트  (0) 2013.03.10
[Android] 뷰 이벤트  (0) 2013.03.10

관련글 더보기

댓글 영역