自定义RatingBar评分动画控件

KRatingBar

先说说,这个控件存在的意义(和原生RatingBar相比):

  • 1.自动排列:指定星星数量后,星星自动均等排列
  • 2.星星点击动画:算是满足一丢丢少女心吧
  • 3.星星数量脱离了RatingBar宽度的控制
  • 4.避免星星出现拖影和“流泪”现象在这里插入图片描述
  • 5.星星的样式直接调用res的drawable,不用再单独去定义个layer-list

Github码云


总之就是使用更方便一点吧。请看效果:

在这里插入图片描述


为啥要写这个控件呢?我就略过了,因为无关信息只会干扰你阅读。下面说说这个控件的使用

1.参数

我添加了这几个参数,分别是:

  • star_width、star_height:星星宽高
  • starMax、rating:星星的总数和点亮的数量
  • starEmpty、starFill:星星两种状态的图标
 <declare-styleable name="KRatingBar">
        <attr name="star_width" format="dimension"/>
        <attr name="star_height" format="dimension"/>
        <attr name="starMax" format="integer"/>
        <attr name="rating" format="integer"/>
        <attr name="starEmpty" format="reference"/>
        <attr name="starFill" format="reference"/>
 </declare-styleable>

2.布局

这个没什么说的,布局写完基本就可以使用了。逻辑都在控件内做了处理。

  <cos.mos.bar.KRatingBar
        android:id="@+id/rating_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        kosmos:starEmpty="@drawable/ic_stars_off"
        kosmos:starFill="@drawable/ic_stars"
        kosmos:starMax="5"
        kosmos:star_height="32dp"
        kosmos:star_width="32dp"/>

3.代码控制

当然,也可以在代码中对KRatingBar动态的控制

bar.setStarEmpty(R.drawable.ic_stars_off)
    .setStarFill(R.drawable.ic_stars)
    .setStarMax(5)
    .setRating(3)
    .setRatingChangeListener(new KRatingBar.RatingChangeListener() {
        @Override
        public void onRatingChange(int rating) {
            Toast.show( "感谢您的" + rating + "个星星");
        }
    }).runAnim();

4.效果

4.1:显示动画:

在这里插入图片描述

4.2:点击动画

在这里插入图片描述

4.3:代码控制的效果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值