android学习笔记(27)星级评分条(RatingBar )

文章标签: android,android-ratingbar
2014-12-26 19:45:24     人阅读    

星级评分条(RatingBar )的功能和用法
星级评分条与拖动条十分相似,它们甚至有相同的父类:
AbsSeekBar。实际上星级评分条与拖动条的用法、功能都十分接 近:它们都允许用户通过拖动来改变进度。RatingBar与SeekBar 最大区别在于:RatingBar通过星星来表示进度。
为了让程序能响应星级评分条评分的改变,程序可以考虑为它绑定一个0nRatingBar Change Listener 监听器。
下面通过一个示例程序来示范RatingBar的功能和用法。
           实例:通过星级改变图片的透明度
该程序其实只是前一个程序的简单改变,只是将上面程序中的SeekBar组件改为使用 RatingBar。下面是界面布局中关于RatingBar的代码片段。
程序清单:codes\02\2.4\RatingBarTest\res\layout\main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<ImageView 
 android:id="@+id/image"
 android:layout_width="fill_parent" 
 android:layout_height="240px" 
 android:src="@drawable/lijiang"
 />
<!-- 定义一个星级评分条 --> 
<RatingBar 
 android:id="@+id/rating"
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:numStars="5"
 android:max="255"
 android:progress="255"
 android:stepSize="0.5"
 />
</LinearLayout>

上面的界面布局中指定了该星级评分条的最大值为255,当前进度为255——其中两个属 性都来自于ProgressBar组件,这没有任何问题,因为RatingBar本来就是一个特殊的 ProgressBar。
主程序只要为RatingBar绑定事件监听器即可,监听星级评分条的星级改变。下面的主 程序为星级评分条绑定监听器的代码。
程序清单:codes\02\2.4\RatingBarTest\src\org\crazyit\ratingbar\RatingBarTest.java

package org.crazyit.ratingbar;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class RatingBarTest extends Activity
{
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  final ImageView image = (ImageView)findViewById(R.id.image);
  RatingBar ratingBar = (RatingBar)findViewById(R.id.rating);
  
  ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener()
  {
   //当拖动条的滑块位置发生改变时触发该方法
   @Override
   public void onRatingChanged(RatingBar arg0
    , float rating, boolean fromUser)
   {
    //动态改变图片的透明度,其中255是星级评分条的最大值,
    //5个星星就代表最大值255
    image.setAlpha((int)(rating * 255 / 5));
   }
  }); 
 }
}


由于上面定义 RatingBar 时指定了 android:stepSize=n0.5",因此该星级评分条中星级的最小变化为〇.5,也^是最少要变化
图2.37星级评分条改变图片半个星级。


原文地址:http://www.itmmd.com/201412/389.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android学习笔记(28)选项卡(TabHost)的功能和用法   上一篇
下一篇  android学习笔记(26)拖动条(SeekBar)的功能和用法
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!