作为Android官方提供的评分控件,RatingBar对于大家来说是比较熟悉的,但大部分人在用过原生RatingBar后肯定对它不满意,因为实在是不好用。这里的不好用包括了:大小改起来不方便、星星间距不好改、使用自己的图片居然还要写xml……总之你很难说出它的优点来,缺点却是脱口而出。
有鉴于此,自己写一个自定义的RatingBar就有必要了,而且要保证实现一些常用的属性,如大小、间距、点击事件等。考虑到这个控件是要在实际项目中发挥作用,而实际工作里是有UI设计给切图的,所以就没有在控件里自己去画星星,而是直接用切图来展示。当然,以后我会考虑使用Canvas直接画星星,这样使用的时候只需要给出颜色值就能得到想要的星星了。
好吧,这个项目我把它命名为NiceRatingBar,你可以在Github找到它的源码:https://github.com/KaelLi1989/NiceRatingBar。当然,这是一个新发布的项目,功能目前比较单一,只支持使用图片来展示星星,不能只输入颜色就自己画星星,并且最低支持到0.5的颗粒度,还无法做到0.1分的颗粒度(更低就没必要了)。当然,这些feature未来会支持的。
一般来说一个评分控件需要有2种基本功能:一种是仅仅展示评分,无法继续操作更改评分;另一种就是可以更改评分。这2种基本功能,NiceRatingBar当然都实现了,仅仅展示评分一般用在商品列表和当前用户已经评分过的、不能重复评分的商品详情页面,能更改评分的地方一般就是用户对某个商品进行评分了。本控件支持传统的点击星星评分,也支持随手势左右滑动进行线性评分。<