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 Manifest中meta-data扩展元素数据的配置与获取方式
这篇文章主要介绍了Android Manifest中meta-data扩展元素数据的配置与获取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-03-03
在Android中如何使用DataBinding详解(Kotlin)
这篇文章主要给大家介绍了关于在Android中如何使用DataBinding(Kotlin)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-11-11
Android AutoCompleteTextView控件基本用法示例
这篇文章主要介绍了Android AutoCompleteTextView控件基本用法,结合实例形式分析了AutoCompleteTextView控件的功能、使用方法及相关操作步骤,需要的朋友可以参考下2016-06-06
Android Studio报错Manifest merger failed with multiple errors
这篇文章主要介绍了Android Studio报错Manifest merger failed with multiple errors2017-10-10


最新评论