介绍

我们先来看一下什么叫RatingBar长什么样的。

我们很多时候订单评价给5星、打车评价都是用的这个RatingBar。本节我们学的这个RatingBar(星级评分条)其实在使用上是非常简单的,大家在某宝买过东西的对这个应该不陌生,收到卖家的包裹里甚至还会附有一张小纸片:五星好评返还多少元这样。

RatingBar关键属性介绍

RatingBar的4个属性:

  • android:isIndicator,RatingBar的指示是否起作用,默认为false,如果为true,RatingBar的进度不能被人为修改。因此叫isIndicator,它的意思就是“我只显示给你看不要你来改“,所以如果是isIndicator=true的话界面上的星星你是点不动的。
  • android:numStars,显示星星的总数量,必须为整数。
  • android:rating,设置默认评分值,值为浮点数。
  • android:stepSize,评分每次增加的值(最小变化值),值为浮点数。

RatingBar有3种内置样工:

  • 默认样式,即:style="?attr/ratingBarStyle",或者是:androidx.appcompat.widget.AppCompatRatingBar
  • 只读,即:style="?android:attr/ratingBarStyleIndicator"
  • 小样式,即:style="?android:attr/ratingBarStyleSmall"

课程目标

我们这次课程的目标就是同时演示以上3种样式在运行时的效果,同时我们对标准的AppCompatRatingBar添加一个点击事件,使得用户在点击手机屏上的小星星时,在主界面里的一个TextView里联动显示根据用户选择的星星不同时所获得的Rating的值。

先来看我们的UI端界面的代码。

代码

activity_main.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://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><RatingBarandroid:id="@+id/defaultRatingBar"android:layout_width="wrap_content"android:layout_height="wrap_content" /><RatingBarandroid:id="@+id/smallRatingBar"style="?android:attr/ratingBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:isIndicator="false"android:numStars="5"android:rating="4"android:stepSize="1" /><RatingBarandroid:id="@+id/indicatorRatingBar"style="?android:attr/ratingBarStyleIndicator"android:layout_width="wrap_content"android:layout_height="wrap_content"android:isIndicator="true"android:numStars="5"android:rating="3"android:stepSize="1" /><androidx.appcompat.widget.AppCompatRatingBarandroid:id="@+id/compatRatingBar"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="" />
</LinearLayout>

代码导读

  • 这边我们使用了LinearLayout布局,从上到下有5个布局;
  • 第一个就是默认=AppCompatRatingBar;
  • 第三个indicatorRatingBar是“指示性”组件,它可以给你看到有几个星而不能去点和编辑;
  • 最后我们用Text View来显示compatRatingBar在“星星改变”时当前的rate值,这是一个浮点数,因为星星可以是“半”个(如果不想要半个要完整的星星需要自定义,不难但不是我们课程范围,本课程不讲这些“非主流程”的东西);

我们来看后台代码如何联动前台星星在被改变时的事件

MainActivity.java

package org.mk.android.demo.demoratingbar;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private RatingBar ratingBarCompat;private TextView txtDisplayValue;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ratingBarCompat = (RatingBar) findViewById(R.id.compatRatingBar);txtDisplayValue=(TextView)findViewById(R.id.textView);ratingBarCompat.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {@Overridepublic void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {StringBuffer displayValue=new StringBuffer();displayValue.append("rating: ").append(String.valueOf(rating));txtDisplayValue.setText(displayValue.toString());}});}
}

关键还在于自己动手去实现一下吧。

Android入门第19天-Android里的RatingBar的使用相关推荐

  1. Android入门第18天-Android里的SeekBar的使用

    SeekBar的介绍 SeekingBar是这么样的一个东西,它常常用在播放视频.音步时用来调节音量.模糊阀值等场景. SeekBar里怎么是通过:android:layout_weight=&quo ...

  2. Android入门第31天-Android里的ViewFlipper翻转视图的使用

    介绍 本篇给大家带了的是ViewFlipper,它是Android自带的一个多页面管理控件,且可以自动播放! 和ViewPager不同,ViewPager是一页页的,而ViewFlipper则是一层层 ...

  3. Android入门第20天-Android里的ScrollView的使用

    介绍 ScrollView(滚动条),它有两种"滚动条": 竖直滚动条: 水平方向上的滚动条:HorizontalScrollView: 我们经常可以看到在手机里正在垂直加载一堆的 ...

  4. Android入门第1天-Android Studio的安装

    安装前的准备 在hosts文件中加入dl.google.com的ip映射 Android Studio在安装时大量的依赖库会从dl.google.com下载.在国内安装步骤卡死基本都是卡死在该步.那么 ...

  5. Android入门第9天-Android读本地JSON文件并显示

    Android在大都情况会取得后台Service返回的json数据来做前端展示.那么Android是如何处理json文件的呢?我们就一起跟着今天的教程一步步来实现吧. 目标 设本地有一个demo.js ...

  6. Android入门第41天-Android中的Service(bindService)

    介绍 在前一天我们介绍了Android中有两种启动Service的方法.并擅述了startService和bindService的区别.同时我们着重讲了startService. 因此今天我们就来讲b ...

  7. Android入门第30天-Android里的Toast的使用

    介绍 本篇带来的是: Android用于提示信息的一个控件--Toast(吐司)!Toast是一种很方便的消息提示框,会在 屏幕中显示一个消息提示框,没任何按钮,也不会获得焦点一段时间过后自动消失! ...

  8. Android入门第35天-Android里的SubMenu

    简介 我们延用在上一篇Menu篇里的例子,把这个ContextMenu里套一层子菜单. 其实,它的原理很简单. 就是在ContextMenu的:public void onCreateContextM ...

  9. Android入门第2天-Android Studio中新建项目

    本章要完成的目标 创建新工程: 设置Gradle镜像: 先讲一下Android Studio工具的使用常识 Android Studio是一款基于IDE的Android开发工具,为目前市面最标准And ...

最新文章

  1. Exchange Server 2016管理系列课件19.开启和管理存档邮箱
  2. 全新WiFi技术问世 更适合智能家庭和物联网
  3. Hr必看:也许你做的绩效考核都是错的
  4. Tesseract-OCR 字符识别-样书训练
  5. 成功解决ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
  6. python写彩票抓取_Python|爬取彩票数据
  7. transferto遇到的问题java.io.FileNotFoundException: C:\Users\Administrator\AppData\Local\Temp
  8. 阿里巴巴:第四财季净亏损76.54亿元,主要由于反垄断法罚款
  9. python从入门到精通需要多久-python学习从入门到精通要多久
  10. ROS Image_transport使用
  11. Kubernetes详解(八)——Kubernetes资源配置清单
  12. 51 单片机 建立 文本文件_笔记系列之单片机原理及应用1
  13. Memcacher win7 安装测试
  14. (转)周明:未来5-10年,自然语言处理将走向成熟
  15. 用Python给你的头像加口罩,加圣诞帽,加红心,加加加
  16. 物联网IoT终端设备如何选择接入协议——(TCP、UDP、MQTT、CoAP、LwM2M哪个更适合?)
  17. tar 打包解压参数详解
  18. BioVendor MxA 蛋白人 ELISA说明书
  19. 使用photoView完成照片查看器(本地图片)
  20. 【AviUtl】动画效果,简易Glitch++(派生),学习笔记

热门文章

  1. svchost异常占用cpu排查
  2. lvs加MySQL读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
  3. League of Legends源计划
  4. 《python程序设计》
  5. jeecg uniapp 微信小程序 授权备忘
  6. Vue.Observable
  7. 清除Excel 2013表格格式
  8. Unity插件实战-DoTween事件
  9. 入手评测 科大讯飞翻译机3.0和2.0有什么区别 哪个好
  10. 游戏计算机推荐,2020十大游戏笔记本电脑排名(最新游戏本推荐)