• Android 控件之RatingBar评分条


    RatingBar是Adnroid中的评分条。效果挺得的

    源码下载

    一、概述

        RatingBar是SeekBar和ProgressBar的扩展,用星星来评级。使用的默认大小RatingBar时,用户可以触摸/拖动或使用键来设置评分,它有俩种样式(大、小),其中大的只适合指示,不适合于用户交互。

    二、实例

    1.布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:paddingLeft="10dip"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RatingBar android:id="@+id/ratingbar1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="3"
            android:rating="2.5" />

        <RatingBar android:id="@+id/ratingbar2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="5"
            android:rating="2.25" />

        <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_ratingbar"
                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_marginLeft="5dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical" />
               
    </LinearLayout>

    2.Java代码

    package wjq.WidgetDemo;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.RatingBar;
    import android.widget.TextView;
    import android.widget.RatingBar.OnRatingBarChangeListener;

    public class RatingBarDemo extends Activity implements
      OnRatingBarChangeListener {
     private RatingBar mSmallRatingBar;
     private RatingBar mIndicatorRatingBar;
     private TextView mRatingText;

     /*
      * (non-Javadoc)
      *
      * @see android.app.Activity#onCreate(android.os.Bundle)
      */
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      // TODO Auto-generated method stub
      super.onCreate(savedInstanceState);
      setContentView(R.layout.ratingbarpage);
      
       mRatingText = (TextView) findViewById(R.id.rating);

             // We copy the most recently changed rating on to these indicator-only
             // rating bars
             mIndicatorRatingBar = (RatingBar) findViewById(R.id.indicator_ratingbar);
             mSmallRatingBar = (RatingBar) findViewById(R.id.small_ratingbar);
            
             // The different rating bars in the layout. Assign the listener to us.
             ((RatingBar)findViewById(R.id.ratingbar1)).setOnRatingBarChangeListener(this);
             ((RatingBar)findViewById(R.id.ratingbar2)).setOnRatingBarChangeListener(this);
     }

     @Override
     public void onRatingChanged(RatingBar ratingBar, float rating,
       boolean fromUser) {
       final int numStars = ratingBar.getNumStars();
             mRatingText.setText(
                      " 受欢迎度" + rating + "/" + numStars);

             // Since this rating bar is updated to reflect any of the other rating
             // bars, we should update it to the current values.
             if (mIndicatorRatingBar.getNumStars() != numStars) {
                 mIndicatorRatingBar.setNumStars(numStars);
                 mSmallRatingBar.setNumStars(numStars);
             }
             if (mIndicatorRatingBar.getRating() != rating) {
                 mIndicatorRatingBar.setRating(rating);
                 mSmallRatingBar.setRating(rating);
             }
             final float ratingBarStepSize = ratingBar.getStepSize();
             if (mIndicatorRatingBar.getStepSize() != ratingBarStepSize) {
                 mIndicatorRatingBar.setStepSize(ratingBarStepSize);
                 mSmallRatingBar.setStepSize(ratingBarStepSize);
             }

     }

    }

  • 相关阅读:
    少用 if 进行普通意义上的参数验证
    到底差在了什么地方:Cs>MUTEX>Monitor>WaitHandle
    SQL Server 中的事务和锁(三)Range SU,XX 以及死锁
    练习:自己动手实现一个轻量级的信号量(二)
    让人崩溃的一上午
    我所犯的几个愚蠢错误(一)
    一个系列 之二
    练习:自己动手实现一个轻量级的信号量(一)
    Delphi的DirectShow开发概述
    xvid的中文简介
  • 原文地址:https://www.cnblogs.com/salam/p/1844741.html
Copyright © 2020-2023  润新知