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

 更新时间:2022年05月29日 10:00:30   作者:任他明月下西楼  
在Android开发中,我们经常会用到对商家或者商品的评价,运用星星进行打分,下面这篇文章主要给大家介绍了关于Android自定义评分控件的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

前言

无意中翻到几年前写过的一个RatingBar,可以拖拽,支持自定义星星图片,间距大小等参数。

自定义参数

为了方便扩展,支持更多的样式,这里将大部分参数设置成支持外部可配置的形式。

<declare-styleable name="RatingBarPlus">
    <attr name="hideImageResource" format="reference"/>
    <attr name="showImageResource" format="reference"/>
    <attr name="starSpace" format="dimension"/>
    <attr name="maxStar" format="integer"/>
    <attr name="stepSize" format="float"/>
    <attr name="rating" format="float"/>
    <attr name="starWidth" format="dimension"/>
    <attr name="starHeight" format="dimension"/>
</declare-styleable>
  • hideImageResource 暗星星图片id
  • showImageResource 亮星星图片id
  • starSpace 星星间距
  • maxStar 星星最大个数
  • stepSize 评分步长,即能不能选中0.1个星
  • rating 默认评分
  • starWidth 星星宽度
  • starHeight 星星高度

解析参数

创建星星位图的时候需要根据配置的大小和图片本身的宽高进行缩放。

绘制

绘制完成之后我们就可以动态设置评分来回显之前的评分,但是经常我们需要与控件交互,动态地设置分数,所以我们还需要重写onTouchEvent方法完成事件处理。

事件处理

评分需要随着手指的移动而动态变化,这里我们记录下当前手指所在的位置,如果在星星上面,就算出当前位置距离星星左边的长度占据整个星星宽度的百分比,然后根据设置的stepSize参数动态微调总评分。

评分监听

我们还需要将评分暴露给外部,处理主动调用getRating()方法获取之外,我们还可以提供一个监听接口,实时提供回调。

功能事件比较简单,只需要在事件处理的时候,微调总评分完成之后回调一下数据就可以了。

if (onRatingChangeListener != null) {
    onRatingChangeListener.onRatingChange(rating);
}

外部使用

ratingBar.setOnRatingChangeListener{
    ratingText.text = "当前评分:${it}"
}

总结

到此这篇关于Android自定义评分控件的文章就介绍到这了,更多相关Android自定义评分控件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android实现登录邮箱的自动补全功能

    Android实现登录邮箱的自动补全功能

    这篇文章主要为大家详细介绍了Android实现登录邮箱的自动补全功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Android 有效的解决内存泄漏的问题实例详解

    Android 有效的解决内存泄漏的问题实例详解

    这篇文章主要介绍了Android 有效的解决内存泄漏的问题的相关资料,这里举例说明,如何实现解决内存泄漏,需要的朋友可以参考下
    2016-11-11
  • android从资源文件中读取文件流并显示的方法

    android从资源文件中读取文件流并显示的方法

    这篇文章主要介绍了android从资源文件中读取文件流并显示的方法,涉及Android针对文件的读取及显示技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Android Studio使用教程(四):Gradle基础

    Android Studio使用教程(四):Gradle基础

    这篇文章主要介绍了Android Studio使用教程(四):Gradle基础,本文讲解了什么是Gradle、安装Gradle、Gradle 基本概念等内容,需要的朋友可以参考下
    2015-05-05
  • Android App中读取XML与JSON格式数据的基本方法示例

    Android App中读取XML与JSON格式数据的基本方法示例

    这篇文章主要介绍了Android App中读取XML与JSON格式数据的基本方法示例,Android中自带的JSONObject非常好用,需要的朋友可以参考下
    2016-03-03
  • Flutter中渐变色的使用案例分享

    Flutter中渐变色的使用案例分享

    在日常的开发中,UI为了让界面更加吸引人往往会在界面上用到大量的渐变色,本文将通过几个案例更好的去了解Flutter中渐变色的使用,需要的可以参考一下
    2023-06-06
  • Android项目迁移到AndroidX的方法步骤

    Android项目迁移到AndroidX的方法步骤

    这篇文章主要介绍了Android项目迁移到AndroidX的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Kotlin中的扩展函数与属性示例详解

    Kotlin中的扩展函数与属性示例详解

    理论上来说,扩展函数很简单,它就是一个类的成员函数,不过定义在类的外面。下面这篇文章主要给大家介绍了关于Kotlin中扩展函数与属性的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • Android实现QQ的第三方登录和分享

    Android实现QQ的第三方登录和分享

    这篇文章主要为大家详细介绍了Android实现QQ的第三方登录和分享,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 深入理解Android之接口回调机制

    深入理解Android之接口回调机制

    本篇文章主要介绍了Android之接口回调机制,在开发中经常会用到,具有一定的学习价值,有需要的可以来了解一下。
    2016-10-10

最新评论