Android评分控件RatingBar使用实例解析

无论游戏,应用,网站,都少不了评分控件。在Android SDK 中提供了 RatingBar控件来实现相应的工作。

<RatingBar/>标签有几个常用评分相关属性

android:numStars,指定评分五角星数。
android:rating,指定当前分数
android:stepSize, 指定分数增量

<RatingBar/>还有3种 常用的style属性

默认style 就是ratingBarStyle
style ratingBarStyleIndicator 不可交互,中等大小
style ratingBarStyleSmall 不可交互,小星星

废话不多说,直接上代码

activity_main.xml布局文件

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

 <!-- 默认style 就是ratingBarStyle,和第二个是一样的 -->
 <!-- 默认参数:星5 步长0.5 初始值 0 -->
 <RatingBar
  android:id="@+id/ratingBar1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />

 <!-- style ratingBarStyle -->
 <!-- 参数:星4 步长0.5 初始值 1 -->
 <RatingBar
  android:id="@+id/ratingBar2"
  style="?android:attr/ratingBarStyle"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:numStars="4"
  android:stepSize="0.5"
  android:rating="1" />

 <!-- style ratingBarStyleIndicator 不可交互,中等大小 -->
 <!-- 参数:星5 初始值 2 不可交互,设置步长无意义 -->
 <RatingBar
  android:id="@+id/ratingBarOne"
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:numStars="5"
  android:rating="2"/>

 <!-- style ratingBarStyleSmall 不可交互,小星星 -->
 <!-- 参数:星4 初始值 2 不可交互,设置步长无意义 -->
 <RatingBar
  android:id="@+id/ratingBarTwo"
  style="?android:attr/ratingBarStyleSmall"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:numStars="4"
  android:rating="2" />

</LinearLayout>

这里运行我们就可以清楚的看到RatingBar的各个属性了,但是用于交互的RatingBar(前两个),和用于展示无法交互的RatingBar(后两个)又该怎么使用呢?

在这里,我们实现一个点击上面的交互RatingBar1,获取评分,并更新到用于展示的RatingBarOne
点击上面的交互RatingBar2,获取评分,并更新到用于展示的RatingBarTwo。

关键方法 就是设置监听setOnRatingBarChangeListener 和 给评分组件设置评分方法setRating(float rating)

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

public class MainActivity extends Activity {

 // 可交互的两个 ratingBar
 private RatingBar ratingBar1 = null;
 private RatingBar ratingBar2 = null;

 // 不可交互的两个 ratingBar
 private RatingBar ratingBarOne = null;
 private RatingBar ratingBarTwo = null;

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // 设置布局页面
  setContentView(R.layout.activity_main);
  // 初始化函数
  initView();
 }

 // 初始化函数
 public void initView() {
  // 通过findViewById分别获得控件
  ratingBar1 = (RatingBar) findViewById(R.id.ratingBar1);
  ratingBar2 = (RatingBar) findViewById(R.id.ratingBar2);
  ratingBarOne = (RatingBar) findViewById(R.id.ratingBarOne);
  ratingBarTwo = (RatingBar) findViewById(R.id.ratingBarTwo);

  // 为ratingBar1添加 OnRatingBarChangeListener
  // 当用户交互改变分值时,触发该事件
  ratingBar1.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
     // 该方法可以获取到 3个参数
     public void onRatingChanged(RatingBar ratingBar,
       float rating, boolean paramBoolean) {
      // 第一个参数 当前评分修改的 ratingBar
      System.out.println(ratingBar);
      // 第二个参数 当前评分分数,范围 0~星星数量
      System.out.println(rating);
      // 第三个参数 如果评分改变是由用户触摸手势或方向键轨迹球移动触发的,则返回true
      System.out.println(paramBoolean);

      //将不可交互的展示型ratingBarOne的评分分数通过setRating
      //设置成onRatingChanged方法获得的ratingBar1的分值参数rating
      ratingBarOne.setRating(rating);
     }
    });

  // 为ratingBar2添加 OnRatingBarChangeListener
  // 当用户交互改变分值时,触发该事件
  ratingBar2.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
     public void onRatingChanged(RatingBar ratingBar,
       float rating, boolean paramBoolean) {
      //将不可交互的展示型ratingBarTwo的评分分数通过setRating
      //设置成onRatingChanged方法获得的ratingBar2的分值参数rating
      ratingBarTwo.setRating(rating);
     }
    });
 }
}

当写完Activity中代码运行后,点击操作前两个RatingBar是不是成功实现了更新后两个RatingBar?
System.out.println控制台输出上可以清楚的看到setOnRatingBarChangeListener 的3个参数的值。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android控件之RatingBar自定义星级评分样式

    一.RatingBar简单介绍 RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定,在使用默认RatingBar时,用户可以通过触摸/拖动/按键(比如遥控器)来设置评分, RatingBar自带有两种模式 ,一个小风格 ratingBarStyleSmall,大风格为ratingBarStyleIndicator,大的只适合做指示,不适用与用户交互. 效果图展示: 二.实例 1.布局文件 <?xml version="1.0&qu

  • Android UI控件RatingBar实现自定义星星评分效果

    本文实例为大家分享了Android RatingBar星星评分效果的具体代码,供大家参考,具体内容如下 继承关系 AppCompatRatingBar 效果图 xml <RatingBar style="@android:style/Widget.DeviceDefault.RatingBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content&

  • Android自定义星星评分控件

    下面为控件的实现历程: 此控件高效,直接使用ondraw绘制,先亮照: 由于Android自身的星星评分控件样式可以改,但是他的大小不好调整的缺点,只能用small normal这样的style调整,自定义不强,因此击发了我自定义星星控件的欲望. 星星评分控件的设计,大体规划为: 需要两张图片,一颗亮星星,一颗空星星:(当然图片不一定是星星,其他图片也可以,现在实验就用星星就好了)星星数量,间距可以自定义,星星的最小步进为0.1,在用户使用的时候与Android自带的方法一样. 星星控件大体分为

  • Android RatingBar星星评分控件实例代码

    效果图: 直接上代码: xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http:

  • Android开发之拖动条和评分组件用法分析

    本文实例讲述了Android开发之拖动条和评分组件用法.分享给大家供大家参考,具体如下: 今天闲着没事做就拿出了Android书接着学习,android就是组件多有时候还会弄混淆了.这次介绍的是拖动条和评分组件,这2个组件也是超级简单的 下面就一个一个的来研究. 1. 拖动条,就类似android手机上调节音量那个,该组件和对话框不同的是用户可以操作.该组件的xml表现形式如下 <SeekBar android:id="@+id/seek" android:layout_marg

  • Android 应用中跳转到应用市场评分示例

    在开发Android App过程中,经常会遇见这样的功能.从当前的app跳转到一个应用商店并且跳转到自己app的详情页面,让用户给自己的App进行评分.评价,从而提高自己App的排名.下面介绍三种方法实现该功能. 方法一:通过系统隐式意图方式去调用应用市场app详情页 try{ Uri uri = Uri.parse("market://details?id="+getPackageName()); Intent intent = new Intent(Intent.ACTION_VI

  • android打开应用所在的市场页面进行评分操作的方法

    本文实例讲述了android打开应用所在的市场页面进行评分操作的方法.分享给大家供大家参考.具体实现方法如下: String mAddress = "market://details?id=" + getPackageName(); Intent marketIntent = new Intent("android.intent.action.VIEW"); marketIntent .setData(Uri.parse(mAddress )); startActi

  • Android星级评分条的实现代码

    RatingBar星级评分条 它跟拖动条类似.都允许用户拖动来改变进度,不同的是,星级评分条通过星星图案表示进度.想淘宝,等等都有这个东西.很简单. 重要记一个组件<RatingBar 属性列表></RatingBar>,属性见名知意 还有三个方法: 1.getRating()方法:获取等级,表示你当前选中了几颗星星 2.getStepSize()方法:每次最少可以改变多少星星(默认是0.5个) 3.getProgress()方法:获取进度,是前两个之积. activity_mai

  • Android星级评分条控件RatingBar使用详解

    Android开发中,时不时的就有要实现星星的评分效果,比如某宝,某团,相信大家也都见过,当然了我们可以自己去画,也可以用美工给切的图去实现,其实在Android原生的控件中就可以来实现这样的效果,它就是RatingBar. 来,我们先看一张图(只在代码中引入了控件) 实现效果如下图: 我们先看一下它的继承关系:这玩意和SeekBar的类结构是一样的,也是ProgressBar的子类 相关属性: android:isIndicator:是否用作指示,用户无法更改,默认false android:

  • Android评分控件RatingBar使用实例解析

    无论游戏,应用,网站,都少不了评分控件.在Android SDK 中提供了 RatingBar控件来实现相应的工作. <RatingBar/>标签有几个常用评分相关属性 android:numStars,指定评分五角星数. android:rating,指定当前分数 android:stepSize, 指定分数增量 <RatingBar/>还有3种 常用的style属性 默认style 就是ratingBarStyle style ratingBarStyleIndicator 不

  • Android开发之拖动条/滑动条控件、星级评分控件功能的实例代码

    ProgressBar有2个子控件: SeekBar   拖动条控件 RatingBar   星级评分控件 1.拖动条控件 <SeekBar android:layout_width="300dp" android:layout_height="wrap_content" android:id="@+id/seekBar" android:min="0" android:max="100" andro

  • Android开发之自定义星星评分控件RatingBar用法示例

    本文实例讲述了Android开发之自定义星星评分控件RatingBar用法.分享给大家供大家参考,具体如下: 星级评分条RatingBar类似于SeekBar.ProgressBar'等等都可以自定义样式 它的主要用途就比如淘宝.景点 满意度等 这里给出两种自定义效果 如图所示 第一种是通过RatingBar获得分数 第二个是通过RatingBar动态调节控件属性(透明度) 由于RatngBar使用简单 自定义样式方法和 https://www.jb51.net/article/158338.h

  • Android 倒计时控件 CountDownView的实例代码详解

    一个精简可自定义的倒计时控件,使用 Canvas.drawArc() 绘制.实现了应用开屏页的圆环扫过的进度条效果. 代码见https://github.com/hanjx-dut/CountDownView 使用 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.hanjx-dut:CountDownView:1.1'

  • Android自定义评分控件的完整实例

    目录 前言 自定义参数 解析参数 绘制 事件处理 评分监听 外部使用 总结 前言 无意中翻到几年前写过的一个RatingBar,可以拖拽,支持自定义星星图片,间距大小等参数. 自定义参数 为了方便扩展,支持更多的样式,这里将大部分参数设置成支持外部可配置的形式. <declare-styleable name="RatingBarPlus"> <attr name="hideImageResource" format="reference

  • iOS App中UIPickerView选择栏控件的使用实例解析

    UIPickerView控件是比UIDatePicker控件更普通的Picker控件,UIDatePicker控件可以理解成是从UIPickerView控件加工出来的专门进行日期选择的控件. UIPickerView控件的用法比UIDatePicker复杂一点.本文中的小例子将用UIPickerView控件做出两种效果,第一个只有一个转盘,第二个有两个转盘,但这两个转盘之间没有依赖关系,也就是说改变其中一个转盘中的选择,不会对第二个转盘产生影响.在下一篇文章会做一个转盘之间有依赖关系的例子. 下

  • VC++中HTControl的CHTButton按钮控件类用法实例解析

    本文以实例形式讲解了VC++中HTControl控件类的CHTButton按钮控件类用法,相信对大家更好的理解VC++有一定的帮助.具体内容如下: 一般了解VC++的朋友都知道,VC++ 按钮控件CHTButton隶属HTControl控件组,直接由WIN32 API实现,你可以在SDK,MFC,wxWidget等环境下使用它.支持生成各种类型的按钮,比如:普通按钮,PNG透明按钮,复选框按钮,单选按钮等.使用时请注意,窗体必须动态创建,代码段如下: m_HTBtnClose.Create(75

  • Android日历控件PickTime代码实例

    最近做项目,需要设置用户的生日,所以做这样一个功能. 开始发觉自带的DatePicker 很是不好用. 上代码: <DatePicker android:id="@+id/dpPicker" android:datePickerMode="spinner" android:calendarViewShown="false" android:layout_marginTop="150dp" android:spinners

  • Android 实现控件悬浮效果实例代码

    随着移动互联网的快速发展,它已经和我们的生活息息相关了,在公交地铁里面都能看到很多人的人低头看着自己的手机屏幕,从此"低头族"一词就产生了,作为一名移动行业的开发人员,我自己也是一名"低头族",上下班时间在公交地铁上看看新闻来打发下时间,有时候也会看看那些受欢迎的App的一些界面效果,为什么人家的app那么受欢迎?跟用户体验跟UI设计也有直接的关系,最近在美团和大众点评的App看到如下效果,我感觉用户好,很人性化,所以自己也尝试着实现了下,接下来就讲解下实现思路!

随机推荐