Android 中文 API (40) —— RatingBar

简介:

一、结构

    public class RatingBar extends AbsSeekBar

    java.lang.Object

          android.view.View

                   android.widget.ProgressBar

                        android.widget.AbsSeekBar

                               android.widget.RatingBar

二、概述

    

  RatingBar是基于SeekBarProgressBar的扩展,用星型来显示等级评定。使用RatingBar的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互。

  当使用可以支持用户交互的RatingBar时,无论将控件(widgets)放在它的左边还是右边都是不合适的。

  只有当布局的宽被设置为wrap content时,设置的星星数量(通过函数setNumStars(int)或者在XML的布局文件中定义)将显示出来(如果设置为另一种布局宽的话,后果无法预知)。

  次级进度一般不应该被修改,因为他仅仅是被当作星型部分内部的填充背景。

  参见Form Stuff tutorial.

三、嵌套类

  接口:RatingBar.OnRatingBarChangeListener

  一个回调函数,当星级进度改变时修改客户端的星级。

四、XML属性

属性名称

描述

android:isIndicator

RatingBar是否是一个指示器(用户无法进行更改)

android:numStars

显示的星型数量必须是一个整形值,像“100”。

android:rating

默认的评分,必须是浮点类型,像“1.2”。

android:stepSize

评分的步长必须是浮点类型,像“1.2”。


五、公共方法

public int getNumStars ()

    返回显示的星型数量

      返回值

                  显示的星型数量

  public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ()

返回值

监听器(可能为空)监听评分改变事件

  public float getRating ()

  获取当前的评分(填充的星型的数量)

  返回值

  当前的评分

  public float getStepSize ()

  获取评分条的步长

  返回值

  步长

  public boolean isIndicator ()

返回值

                判断当前的评分条是否仅仅是一个指示器(注:即能否被修改)

  public void setIsIndicator (boolean isIndicator)

  设置当前的评分条是否仅仅是一个指示器(这样用户就不能进行修改操作了)

  参数

  isIndicator       Bool值,是否是一个指示器 

  public synchronized void setMax (int max)

  设置评分等级的范围,从0max

  参数

  max         评分条最大范围。 

  public void setNumStars (int numStars)

  设置显示的星型的数量。为了能够正常显示它们,建议将当前widget的布局宽度设置为

wrap content

  参数

  numStars         星型的数量 

  public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)

  设置当评分等级发生改变时回调的监听器

  参数

  listener  监听器 

  public void setRating (float rating)

  设置分数(星型的数量)

  参数

  rating      设置的分数 

  public void setStepSize (float stepSize)

  设置当前评分条的步长(step size

  参数

  stepSize 评分条的步进。例如:如果想要半个星星,它的值为0.5

六、受保护方法

  protected synchronized void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

  权衡 view  content 来决定它的宽度和高度的整齐。它被measure(int, int) 调用 并且应该被子类所覆盖,以便提供准确高效的布局测量。

  规定: 当覆盖这个方法的时候,你必须调用 setMeasuredDimension(int, int)以便存储精确的视图的宽和高。如果不这样做的话将触发llegalStateException异常,被函数 measure(int, int)抛出。调用父类 onMeasure(int, int)是合理的。

  尺寸的基本类的实现默认是背景大小,除非通过MeasureSpec允许大的尺寸。子类应该覆盖 onMeasure(int, int) 以便提供更好的布局大小。

如果这个方法被覆盖,子类应该负责确保标准的宽和高至少是视图的最小宽度和高度的值(分别为getSuggestedMinimumHeight()  getSuggestedMinimumWidth()两方法)。

    参数

           widthMeasureSpec     受主窗口支配的水平空间要求。这个需求通过 View.MeasureSpec.进行编码。

               heightMeasureSpec    受主窗口支配的垂直空间要求。这个需求通过   View.MeasureSpec . 进行编码。  

七、补充

    文章链接

                   Android 控件之RatingBar评分条

                   Android更换RatingBar图片

                   [Android学习指南]RatingBar 评分条

    示例代码代码转载自Android手机开发者论坛

      Java文件

public   class  AndroidRatingBar  extends  Activity {
   
/**  Called when the activity is first created.  */
   @Override
   
public   void  onCreate(Bundle savedInstanceState) {
       
super .onCreate(savedInstanceState);
       setContentView(R.layout.main);

       
final  RatingBar ratingBar_Small  =  (RatingBar)findViewById(R.id.ratingbar_Small);
       
final  RatingBar ratingBar_Indicator  =  (RatingBar)findViewById(R.id.ratingbar_Indicator);
       
final  RatingBar ratingBar_default  =  (RatingBar)findViewById(R.id.ratingbar_default);

       ratingBar_default.setOnRatingBarChangeListener(
new  RatingBar.OnRatingBarChangeListener(){

   
public   void  onRatingChanged(RatingBar ratingBar,  float  rating,
     
boolean  fromUser) {
    ratingBar_Small.setRating(rating);
    ratingBar_Indicator.setRating(rating);
    Toast.makeText(AndroidRatingBar.
this " rating: " + String.valueOf(rating),
      Toast.LENGTH_LONG).show();
   }});
   }
}

      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"
   
>
< TextView 
   
android:layout_width ="fill_parent"
   android:layout_height
="wrap_content"
   android:text
="@string/hello"
   
/>
< RatingBar 
   
android:layout_width ="wrap_content"
   android:layout_height
="wrap_content"
   style
="?android:attr/ratingBarStyleIndicator"
   android:id
="@+id/ratingbar_Indicator"
   
/>
< RatingBar 
   
android:layout_width ="wrap_content"
   android:layout_height
="wrap_content"
   style
="?android:attr/ratingBarStyleSmall"
   android:id
="@+id/ratingbar_Small"
   android:numStars
="20"
   
/>
< RatingBar 
   
android:layout_width ="wrap_content"
   android:layout_height
="wrap_content"
   style
="?android:attr/ratingBarStyle"
   android:id
="@+id/ratingbar_default"
   
/>
</ LinearLayout >

 本文转自博客园农民伯伯的博客,原文链接:Android 中文 API (40) —— RatingBar,如需转载请自行联系原博主。

目录
相关文章
|
8月前
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
232 0
|
7月前
|
API Android开发
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
107 2
|
8月前
|
API 数据库 Android开发
Android SQLite数据库中基础的增删改查操作以及API的详解
Android SQLite数据库中基础的增删改查操作以及API的详解
66 0
|
10月前
|
API Android开发
Android Activity Result API
Android Activity Result API
100 0
|
11月前
|
Java API Android开发
Sui为根应用提供Java APIs,滴API。主要提供直接使用Android APIs的能力(几乎以Java作为root的身份
Sui为根应用提供Java APIs,滴API。主要提供直接使用Android APIs的能力(几乎以Java作为root的身份,在root下启动app自己的AIDL风格的Java服务。这将使root应用程序开发变得更加容易。
142 0
|
缓存 Java API
Android音频API
MediaRecorder与MediaPlayer并不能算完整意义的音频API,它们只是系统音频API的封装,除了采集/播放,他们集成了编码/解码、复用/解复用等能力。它们在最底层还是调用了AudioRecorder、AudioTrack。下面主要介绍它们的几个主要的配置项。
363 0
|
Ubuntu Java Shell
Android使用FFmpeg的API库
Android使用FFmpeg的API库
293 1
|
Android开发
android RatingBar基本使用介绍
android RatingBar基本使用介绍
android RatingBar基本使用介绍
|
5天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
28天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
14 0