Android 自学之星级评分条RatingBar

星级评分条(RatingBar)与拖动条十分相似,他们还有共同的父类AbsSeekBar。实际上星级评分条和拖动条的用法和功能都十分的接近:他们都允许用户通过拖动来改变进度。RatingBar与SeekBar的最大区别在于:RatingBar是通过星星来表示进度。

为了让程序能响应星级评分条评分的改变,程序可以考虑为它绑定一个OnRatingBarChangeListener监听器。

星级评分条支持的常见的XML属性。

XMl属性 说明
android:isIndicator 设置该星级评分条是否允许用户改变(true为不允许改变)
android:numstars 设置该星级评分条总共有多少个星级
android:rating 设置该星级评分条默认的星级
android:stepSize 设置每次最少需要改变多少个星级

 

 

 

 

 

实例:通过星级改变图片的透明度

layout/main.xml

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

 2     xmlns:tools="http://schemas.android.com/tools"

 3     android:orientation="vertical"

 4     android:layout_width="match_parent"

 5     android:layout_height="match_parent">

 6     

 7     <ImageView 

 8     android:id="@+id/image"

 9     android:layout_width="fill_parent" 

10     android:layout_height="240px" 

11     android:src="@drawable/lijiang"

12     />

13     

14     <!-- 定义一个星级评分条 -->    

15     <RatingBar 

16     android:id="@+id/rating"

17     android:layout_width="wrap_content" 

18     android:layout_height="wrap_content" 

19     android:numStars="5"

20     android:max="255"

21     android:progress="255"

22     android:stepSize="0.5"

23     />

24     

25     

26 </LinearLayout>

主程序:com.example.ratingbar.RatingBarTest.xml

 1 package com.example.ratingbar;

 2 

 3 import android.support.v7.app.ActionBarActivity;

 4 import android.support.v7.app.ActionBar;

 5 import android.support.v4.app.Fragment;

 6 import android.os.Bundle;

 7 import android.view.LayoutInflater;

 8 import android.view.Menu;

 9 import android.view.MenuItem;

10 import android.view.View;

11 import android.view.ViewGroup;

12 import android.widget.ImageView;

13 import android.widget.RatingBar;

14 import android.widget.RatingBar.OnRatingBarChangeListener;

15 import android.os.Build;

16 

17 public class RatingBarTest extends ActionBarActivity {

18 

19     @Override

20     protected void onCreate(Bundle savedInstanceState) {

21         super.onCreate(savedInstanceState);

22         setContentView(R.layout.main);

23 

24         final ImageView image = (ImageView) findViewById(R.id.image);

25         RatingBar ratingBar = (RatingBar) findViewById(R.id.rating);

26         

27         ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

28             

29             @Override

30             public void onRatingChanged(RatingBar ratingBar, float rating,

31                     boolean fromUser) {

32                 //动态改变图片的透明度,其中255是星级评分条的最大值

33                 //5个星星就代表最大值255

34                 image.setAlpha((int)(rating * 255 / 5));

35             }

36         });

37     }

38 

39 }

运行效果5颗星:

运行效果3颗星:

 

你可能感兴趣的:(RatingBar)