RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定,在使用默认RatingBar时,用户可以通过触摸/拖动/按键(比如遥控器)来设置评分, RatingBar自带有两种模式 ,一个小风格 ratingBarStyleSmall,大风格为ratingBarStyleIndicator,大的只适合做指示,不适用与用户交互。

 
    黄色星形为  自定义RatingBar  
    小绿色为自带的  ratingBarStyleSmall
    大绿色为自   带的ratingBarStyleIndicator

通过设置 style="XXXXXXXXXXXXX"进行设置切换(比如:style="?android:attr/ratingBarStyleIndicator")

自定义RatingBar需要注意的地方

一般情况下,系统自带的RatingBar是远远无法满足开发需求的,我们根据图片自定一个RatingBar,在开始实现自定义RatingBar之前,顺带说一下res目录下图片放置目录的区别:

在android sdk 1.5版本之前res目录下面只有一个drawable一个目录,在android sdk 1.6版本以后就出现了三个目录,分别是drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi,
    (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854) 
    (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
    (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
    (4)drawable-xhdpi里面存放超大分辨率的图片,至少960dp x 720dp 
由于我们自定义实现的RatingBar里面使用到的星形图片分辨率比较低,所以一般情况下,我们把图片放到drawable-mdpi或者drawable-ldpi里面。

自定义RatingBar的实现过程

首先,根据图片自定一个RatingBar的背景条,和图片放到同一个目录下面(比如drawable-mdpi),room_rating_bar.xml

?
1
2
3
4
5
6
7
8
9
<? xml version = "1.0" encoding = "utf-8" ?>
     < layer-list xmlns:android = "http://schemas.android.com/apk/res/android" >
         < item android:id = "@+android:id/background"
         android:drawable = "@drawable/star1" ></ item > < span ></ span >              
                 < item android:id = "@+android:id/secondaryProgress"
                 android:drawable = "@drawable/star1" ></ item >
                 < item android:id = "@+android:id/progress"
         android:drawable = "@drawable/star2" ></ item >
</ layer-list >

backgroud:是用来填充背景图片的,和进度条非常类似,当我们设置最高评分时(android:numStars),系统就会根据我们的设置,来画出以星星为单位的背景(假如android:numStars="5",就会画出5颗灰色的星星)
    progress:是用来在背景图片基础上进行填充的指示属性(和进度条类似,第一进度位置)
    secondaryProgress:同progress一样属于第二进度位置(如果不定义这个,进度条拖动,每次就画出一整颗星星(亮),第二进度(暗)没有覆盖掉第一进度之后的位置,从左往右是拖不出来N.5颗星星的,这样评分效果就不完整)

其次,通过开始介绍,我们知道RatingBar的样式是通过style来切换的,在android中,我们可以通过在styles.xml文件中通过设置style属性,来继承我们需要自定控件类型,如下styles.xml

?
1
2
3
4
5
6
7
8
<? xml version = "1.0" encoding = "utf-8" ?>
< resources >
     < style name = "roomRatingBar" parent = "@android:style/Widget.RatingBar" >
         < item name = "android:progressDrawable" >@drawable/room_rating_bar</ item >
         < item name = "android:minHeight" >16dp</ item >
         < item name = "android:maxHeight" >16dp</ item >
     </ style >
</ resources >

通过  parent 属性来选择继承的父类,我们这里继承RatingBar类。 
    重新定义  progressDrawable 属性(RatingBar的背景条,和我们在首先里面介绍的那样) 
maxHeight和minHeight可以根据我们图片像素或者其他参考值来设定。

最后 ,在我们需要用到RatingBar的xml配置文件里面添加RatingBar控件。 
    main.xml

?
1
2
3
4
5
6
7
8
9
< RatingBar
         android:id = "@+id/room_ratingbar"
         style = "@style/roomRatingBar"
         android:layout_width = "wrap_content"
         android:layout_height = "wrap_content"
           android:numStars = "5"
          android:rating = "4"
         android:layout_marginLeft = "10dp" >
     </ RatingBar >

RatingBar简单介绍相关推荐

  1. 遗传算法的简单介绍以及模式定理的简单证明

    遗传算法   遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...

  2. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...

  3. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...

  4. 2021年大数据ELK(二):Elasticsearch简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...

  5. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  6. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  7. LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍

    LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...

  8. dubbo学习过程、使用经验分享及实现原理简单介绍

    一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...

  9. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

最新文章

  1. IOS TableView实现省市联动
  2. Linux中source命令的用法
  3. .Net程序内存泄漏解析
  4. kotlin 查找id_Kotlin程序在矩阵中查找偶数和奇数的频率
  5. 自动驾驶计算本车离期望轨迹距离的方法
  6. java面试要点---ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
  7. 力扣——合并两个有序链表
  8. java velocity 语法_Velocity初探小结--velocity使用语法详解
  9. 安卓7.0 安兔兔 作假修改
  10. OSChina 周一乱弹 —— 为单身狗准备的菜
  11. 了解计算机的配置及价格行情,最新电脑配置清单及价格的详细介绍
  12. 17 | 五险一金到底有什么用?被忽视的个人利益
  13. 多电脑如何在一个局域网内共享一台打印机
  14. 使用Feign实现Form表单提交
  15. Android中注解处理器系列之-简单使用
  16. 电脑硬件:谈谈cpu后边数字及字母的意思
  17. 奥运14日看点:杨威金牌最稳 领衔7大夺金点
  18. 数字定时误差检测算法系列之 ———时域Gardner算法
  19. 前端培训一般要多少钱
  20. 网站浏览计数器html,Web浏览计数器的设计应用

热门文章

  1. vue动态生成多个Echarts图表
  2. HTML+CSS+JS生日快乐网站模板(多页面功能版本+音乐)
  3. 01-楼宇智能化综合布线系统
  4. 轻薄本市场已成PC新战场:新玩家的“杀入”与老玩家的“救赎”
  5. 最近完成了一个回合制网游的服务器架构
  6. 讯飞语音SDK集成调试常见问题
  7. 即时通讯(腾讯)流程
  8. oracle杨树,Oracle计算时间差
  9. 开启DHCP地址分配审核日志
  10. 精华笔记 112314