Android评分条控件RatingBar自定义背景颜色图片

Android自定义RatingBar,图片可缩放 一、概述最近开发项目的过程需要用到RaingBar控件,类似于一般APP上的评分功能,期初觉得只要用系统自带的RatingBar然后修改图片就好,但是试了之后发现图片不能够自适应改变大小,用了网上的一些方法后貌似也无济于事,于是乎自己写一个简单一点的易用的RaingBar。 第一次写博客,也许写的不是太好,多多见谅,完整项目代码会在最后给出下载链接(Eclipse)思路: 自定义控件继承自Fram 阅读详情

默认的背景图片颜色是绿色的,看起来和项目颜色极不统一,所以需要自定义背景图片。

 

原理很简单,就是替换系统默认的三种图片。

替换方式是使用RatingBar的android:progressDrawable="@drawable/rating_yellow" 属性进行覆盖

 

其中@drawable/rating_yellow内容如下:

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <layer-list  
  3.   xmlns:android="http://schemas.android.com/apk/res/android">  
  4.     <item android:id="@android:id/background" android:drawable="@drawable/star_empty" />  
  5.     <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/star_half" />  
  6.     <item android:id="@android:id/progress" android:drawable="@drawable/star_full" />  
  7. </layer-list>  

需要准备三张图片,分辨对应全星(star_full)、 半星(star_half)、无星(star_empty)

 

有篇文章介绍的更详细http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/

 

实际运行效果图


在Android的开发中,有一个叫做评分控件RatingBar,我们可以使用该控件做等级划分、评分等作用,星星形状显示,也可以半星级别,我们来看一下评分控件如何使用。

 

布局文件中定义控件以及属性,这里主要需要指定的是总星星数量,和当前的值,也就是总级别跟当前级别的量。

<RatingBar
    android:id="@+id/ratingBar"
    android:numStars="5" //总级别,总分,星星个数
    android:rating="1.5"  //当前级别,分数,星星个数
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</RatingBar>

评分控件中两个比较重要的方法:

RatingBar.setRating(flaot rating);
RatingBar.getRating();

事件监听处理:

RatingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener(){
@Override
    public void onRatingChanged(RatingBar ratingBar, float rating,  boolean fromUser) {
           //doing actions
    }
});

本文出自http://1622511.blog.51cto.com/1612511/567316

Android 中文 API  —— RatingBar 

正文

  一、结构

    public class RatingBar extends AbsSeekBar

 

    java.lang.Object

          android.view.View

                   android.widget.ProgressBar

                        android.widget.AbsSeekBar

                               android.widget.RatingBar

 

 

  二、概述

    

  RatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定。使用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)

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

  参数

  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 {
   

   @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 >

 

结束

  本文为"madgoat"和"wallace2010"联合署名,原因是翻译重了,不过两个翻译得都很好,这样翻译重的事件也将随着管理的完善得意解决,感谢两位的相互理解,感谢大家的支持!

http://www.cnblogs.com/over140/archive/2010/11/18/1880391.html


Android星级评分条设计与实现 本文还有配套的精品资源,点击获取 简介:星级评分条是Android开发中常用的UI元素,用于收集用户反馈。本示例深入探讨了RatingBar的使用方法,包括XML布局声明、属性详解、编程接口、监听评分变化、自定义样式和示例代码。通过本课程,开发者可以掌握RatingBar的实际应用,提升用户体验。 1. Android星级评分条简介 星级评分条是一个常用的控... 阅读详情

相关推荐

Android自定义RatingBar的背景图片

自定义RatingBar的背景图片,并解决在6.0手机上显示不全的问题。

Android Ratingbar自定义替换系统图片

RatingBar控件是android自带的一个控件,在一些电商类的app上很常见,但是系统提供的控件图片实在太过单调,而美工又常常会设计一些稀奇古怪的图片用来展示ratingbar(笔者就曾经深受其害),那么应该怎样替换掉系统自带的这些图片呢?其实说来也简单,就像把大象放入冰箱一样,只需要三步: 1. 在drawable下准备两张图片(没有找美工要),然后在drawable下准备一个图片资源r

Winter973的博客 1961

Unity IAP插件实战:从零搭建Google Play内购系统

本文详细介绍了如何使用Unity IAP插件从零搭建Google Play内购系统,涵盖环境准备、双端配置、核心API实现及常见问题排查。通过实战代码示例,帮助开发者快速掌握跨平台内购功能开发,提升手游商业化效率。

weixin_28692867的博客 430

android 自定义图片,Android RatingBar自定义替换系统图片

1.自定义替换提醒☆图片,准备两个图片添加到系统中去:如下: 在drewable下定义一个图片资源ratingbar_drawable.xmlandroid:id="@+android:id/background"android:drawable="@drawable/unselect">android:id="@+android:id/secondaryProgress"and...

weixin_39932344的博客 330

OFDM调制matlab仿真详细代码

MATLAB仿真代码 % ================================================== % 作者: 肆拾伍 % 时间:11/30 2019 % 版本:V3 % =================OFDM仿真参数说明:================ % % 子载波数 carrier_count ---200 % 总符号数 symbol_count ...

肆拾伍的博客 3万+

电脑版微信多开,最详细教程没有之一

首先桌面任意的位置右键新建文本文档输入如下代码: TASKKILL /F/IM WECHAT.EXE start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" ...

大超子 4390

RS485+CAN双路继电器模块:工业级远程开关量控制解决方案

在工业自动化与设备控制领域,远程、稳定地控制开关量输出是核心需求。RS485和CAN总线作为两种主流的工业现场总线,通过差分信号传输和抗共模干扰设计,有效解决了长距离通信中的信号衰减和电磁干扰问题,是实现可靠分布式控制的关键。其技术价值在于支持总线式拓扑,简化了多节点系统的布线,并通过标准协议(如Modbus RTU)实现了与不同品牌控制器(如PLC、工控机)的无缝集成,提升了系统的可维护性和兼容性。应用场景广泛覆盖智能家居、楼宇自动化以及复杂的工业现场控制。本文聚焦的RS485+CAN双路继电器模块,正是

weixin_34375251的博客 432

虚拟机扩容——非LVM分区

虚拟机扩容——非LVM分区

ytraister的博客 3905

Android 更换 RatingBar背景图片

RatingBar是我们常用来显示评分或等级的控件,但系统的背景显得的单调,因此我们想把他做的个性一点。用更好的图片替换系统默认图片。 上边的是系统的,下边的是换过自己喜欢的图片后的(我也没有什么好看的图片,就随便选了两个图片,也不怎么好看。。。) 做法很简单: <RatingBar android:id="@+id/ratingbar" and

每天进步一点点 3182

基于UC3842的反激电源的全面深入解析与MATLAB仿真

内置电流检测,可实现电流模式控制,提高系统的动态响应性。多种保护功能,如欠压锁定、过温保护、短路保护等,确保系统的安全可靠运行。宽工作电压范围,适应不同的电源设计需求。简单的外部元件配置,易于实现。UC3842的典型应用包括开关电源、DC-DC转换器和反激式电源等,其稳定性和可靠性在实际应用中得到了广泛验证。

qq_38334677的博客 1086

yolov26改进 | Neck/颈部创新篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov26(全网独家创新)

本文提出了一种创新的分层特征融合模块HFFB(Hierarchical Feature Fusion Block)来改进YOLOv26的neck部分,构建了名为HFPN的新型特征金字塔网络。该模块通过三分支结构融合局部特征(CNN提取)、全局特征(Swin Transformer提取)和中间特征,并包含空间注意力(SA)、通道注意力(CA)和残差反向MLP(IRMLP)等组件来优化特征融合效果。实验表明,该方法能针对不同尺度目标(大/中/小)进行自适应检测,可根据具体数据集需求选择不同配置。文章详细提供了核

Snu77的博客 485

android自定义评分条(RatingBar)

android自定义评分条(RatingBar)本自定义控件是因为本人在开发过程中,评分条的适配出现问题而诞生,在网上找了些自定义控件,发现都不是自己想要的,所以只能自己动手。 原生的RatingBar适配难是因为在要自定义星星图标无法设置星星的大小和星星之间的间距,适配了这个厂商的手机可能那个手机有又问题,当时我就是在vivo手机适配好,到了同样分辨率的乐视手机出现了问题,我这里的思路是

liu_xiong的博客 8255

LoRA 完整解析:从理论到实践

LoRA(低秩适应)是一种高效的大模型微调方法,通过添加少量可训练参数(低秩矩阵)来适配新任务,避免全参数微调的高成本。其核心是将权重更新ΔW分解为两个小矩阵B×A的乘积,大幅减少训练参数量(仅0.1-1%)。LoRA基于内在维度假设,通过低秩约束捕捉核心任务信息,兼具效率与效果。实际应用中,常用配置为秩r=16-32,目标模块选择注意力层的q_proj和v_proj,学习率比全参数微调大10倍(约1e-4)。优势包括参数高效(内存降低60-80%)、多任务适配灵活、保留预训练知识等,已成为大模型微调的主流

echo的博客 1411

Android中的进度条、拖动条及星级评分控件

进度条控件(ProgressBar)、拖动条控件(SeekBar)、星级评分控件(RatingBar)在Android开发中都是比较常用的控件。 进度条用来显示一个耗时动作的进度,但它并不能自动显示进度的变化需要通过方法来控制。进度条样式大体有两种:水平进度条和圆形进度条(即定时进度条和不定时进度条,也叫确定的进度条和不确定的进度条),默认为圆形进度条。圆形进度条无法显示进度比例,只要其可见就会

QuietShake的博客 4271

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android学习(三)表单

表单 TextView(文本框) EditText(输入框) Button(按钮)与ImageButton(图像按钮) ImageView(图像视图) RadioButton(单选按钮)&Checkbox(复选框) 开关按钮ToggleButton和开关Switch ProgressBar(进度条) SeekBar(拖动条) RatingBar(星级评分条) TextView(文本框)...

Aizen_Sousuke的博客 1829

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android——控件

控件的单位 px:像素,即在屏幕上显示的最小元素单位,屏幕是由一个个像素点形成的分辨率越高,屏幕像素点越多,所以采用px定义控件大小的话,在不同分辨率的设备上显示的效果可能会达不到预期。 pt:磅数,一磅等于1/72英寸,一般用作字体显示,但显示效果同样会随着不同型号的设备而显示不同。 dp:一种基于屏幕密度的抽象单位,在不同的显示设备上,可以根据设备的分辨率大小来显示不同的大小。 sp:可伸缩...

weixin_43476818的博客 216

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android入门主要知识总结

Android基础资源文件LinearLayout(线性布局)RelativeLayout(相对布局--泡泡龙)FrameLayout(帧布局--医者天下)ListView(列表视图)可以作为控件也可以作为布局属性:Spinner(下拉框)开关按钮控件(1.ToggleButton 2.Switch)单选框(RadioGroup)复选框(CheckBox)ProgressBar(进度条) Seek...

Hlgrkj的博客 355

常见控件简单总结

ProgressBar 进度条可以动态地显示进度,因此避免长时间执行某个耗时操作时,让用户感觉到失去了响应,从而更好地提高用户界面的友好性。 分为不定时进度条和水平进度条两类.或者叫做确定的和不确定的进度条。 Android支持几种风格的进度条,通过style属性可以为ProgressBar指定风格。 例如:android:style/Widget.ProgressBar.Horizont

try 481

android ratingbar自定义图片

<RatingBar android:id="@+id/ratingbar" style="?android:attr/ratingBarStyleIndicator"/>通过设置style来改变ratingbar的样式: ratingBarStyleSmall 小风格 ratingBarStyleIndicator 大风格也可以自定义样式满足项目需求: 在st

hellokittylin的专栏 939

麦子学院android开发笔记:Android更换RatingBar图片

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33805557的博客 202

android ratingbar 图片大小,RatingBar 修改 颜色 大小 图片

一、RatingBar如何更改填充星星的颜色呢?解决方法:1、在Android 5.0版本之后,RatingBar控件有一个 android:progressTint: 属性,在这里可以直接设置自己想要的颜色。android:progressTint="@color/orange_main_color"android:progressBackgroundTint="@color/app_main_...

weixin_28685045的博客 549

Android RatingBar自定义替换系统图片

1.自定义替换提醒☆图片,准备两个图片添加到系统中去:如下:        在drewable下定义一个图片资源ratingbar_drawable.xml 01 xml version="1.0" encoding="utf-8"?> 02 layer-list xmlns:android="ht

strliu的专栏 1929

RatingBar的基本使用和自定义样式

版权声明:本文来自 Crocutax 的博客 , 转载请注明出处 http://www.crocutax.com 今天项目中又用到了RatingBar,于是翻出来之前踩坑的一篇笔记,快速解决问题,顺便把笔记内容整理在此,方便以后查阅。当项目中遇到【评分】需求的时候,一般情况下都会使用RatingBar用于UI展示,而且很多时候都不会使用原生样式。原因有两个: Android和iOS样式的统一 系统原

闰土CMS 2832
上一篇: Android 获取控件高度宽度三种方法,防止0的出现,计算空间宽度,文字宽度
下一篇: Android空间之TextView应用
乐由心起
博客等级 码龄16年 61粉丝 295原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值