Android详细教程(基础篇):十二、View组件高级篇:RatingBar详解

版权声明:本文为博主原创文章,转载请注明出处。作者:杨雄进 https://blog.csdn.net/makyan/article/details/89164352

7.6. RatingBar(评分组件)

java.lang.Object

   

android.view.View

 

   

android.widget.ProgressBar

 

 

   

android.widget.AbsSeekBar

 

 

 

   

android.widget.RatingBar

使用默认组件:

<LinearLayout

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

            android:id="@+id/MyLayout"

            android:orientation="vertical"

            android:layout_width="fill_parent"

            android:layout_height="fill_parent">

            <RatingBar

                       android:numStars="5"  à评分星的个数

                       android:stepSize="0.5" à步长

                       android:isIndicator="false" à不可使用:false,可使用;true,不可使用

                       android:id="@+id/ratingbarA"

                       android:layout_width="wrap_content"

                       android:layout_height="wrap_content"/>

            <RatingBar

                       android:numStars="5"

                       android:rating="3"

                       android:isIndicator="true"

                       android:id="@+id/ratingbarB"

                       android:layout_width="wrap_content"

                       android:layout_height="wrap_content"/>

            <TextView

                       android:id="@+id/text"

                       android:layout_width="fill_parent"

                       android:layout_height="wrap_content"/>

</LinearLayout>

可以不用Activity程序的支持,演示效果:

star_conf_file.xml

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

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

     <item    

          android:id="@+android:id/background"

          android:drawable="@drawable/star_empty"/>

     <item    

          android:id="@+android:id/secondaryProgress"

          android:drawable="@drawable/star_empty"/>

     <item    

          android:id="@+android:id/progress"

          android:drawable="@drawable/star_full"/>

</layer-list>

需在values资源文件夹里面配置样式:

styles.xml

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

<resources>

     <style

          name="myRatingBarStyle"

          parent="@android:style/Widget.RatingBar">

          <item name="android:progressDrawable">

               @drawable/star_conf_file</item>

          <item name="android:minHeight">53dip</item>

          <item name="android:maxHeight">53dip</item>

     </style>

</resources>

activity_rating.xml

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

<LinearLayout

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

     android:id="@+id/MyLayout"

     android:orientation="vertical"

     android:layout_width="fill_parent"

     android:layout_height="fill_parent">

     <RatingBar

          android:numStars="5"

          android:stepSize="0.5"

          android:isIndicator="false"

          android:id="@+id/ratingbar"

          style="@style/myRatingBarStyle"

          android:layout_width="wrap_content"

          android:layout_height="wrap_content"/>

     <TextView

          android:id="@+id/text"

          android:layout_width="fill_parent"

          android:layout_height="wrap_content"/>

</LinearLayout>

Activity:

package com.makyan.demo;

import android.app.Activity;

import android.os.Bundle;

import android.widget.RatingBar;

import android.widget.TextView;

public class RatingActivity extends Activity {

     private RatingBar ratingBar = null;                          // 定义评分组件

     private TextView text = null;                               // 文本显示组件

     @Override

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          super.setContentView(R.layout.activity_rating);

          ratingBar = (RatingBar) super.findViewById(R.id.ratingbar) ;

          ratingBar.setStepSize(1.0f) ;                     // 设置步长

          text = (TextView) super.findViewById(R.id.text) ;// 取得组件

          ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListenerImpl());          // 设置监听

     }

     private class OnRatingBarChangeListenerImpl implements

               RatingBar.OnRatingBarChangeListener {

          @Override

          public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {

               int num = (int) rating ;                          // 取得当前值

               String result = null ;                                 // 定义字符串保存结果

               switch (num) {

               case 5:

                    result = "非常满意";                               // 显示信息

                    break ;

               case 4:

                    result = "满意";                                       // 显示信息

                    break ;

               case 3:

                    result = "还可以";                                 // 显示信息

                    break ;

               case 2:

                    result = "不满意";                                 // 显示信息

                    break ;

               case 1:

                    result = "非常不满意";                             // 显示信息

                    break ;

               }

               RatingActivity.this.text.setText("您对www.makyanjava.cn的网站满意度是:"+ result);                                     // 增加文本显示

          }

     }

}

演示效果:

 

猜你喜欢

转载自blog.csdn.net/makyan/article/details/89164352