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颗星:

 

posted on 2014-05-30 11:11  杨_静  阅读(1664)  评论(0编辑  收藏  举报

导航