Android实现自定义星星评分控件

这篇博客介绍了如何在Android中创建一个自定义的星星评分控件,以克服Android内置控件大小调整不便的问题。控件使用ondraw方法直接绘制,支持半星显示,通过设置不同图片实现亮星和空星效果。文章提供了一种将Drawable转换为Bitmap并利用BitmapShader实现0.1步进评分的方法,并给出了相关代码示例和工程源码链接。
摘要由CSDN通过智能技术生成

这篇文章主要为大家详细介绍了Android自定义星星评分控件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

下面为控件的实现历程: 
此控件高效,直接使用ondraw绘制,先亮照: 

由于Android自身的星星评分控件样式可以改,但是他的大小不好调整的缺点,只能用small normal这样的style调整,自定义不强。 

星星评分控件的设计,大体规划为: 

需要两张图片,一颗亮星星,一颗空星星;(当然图片不一定是星星,其他图片也可以,现在实验就用星星就好了)星星数量,间距可以自定义,星星的最小步进为0.1,在用户使用的时候与Android自带的方法一样。 

星星控件大体分为两层,第一层空星星,第二层亮星星,第一层固定,第二层动态绘制,这样就可以实现评分。 

在画星星的时候,由于在xml得出回来的对象是drawable,不必再转换为bitmap绘制,故直接绘制drawable,并且提升效率。 

绘制drawable需要两个方法就够了 
1、设置绘制到那里: 

setBounds(int left ,int top , int right ,int bottom);

2、绘制: 

draw(Canvas canvas); 

20171484921372.jpg

经过一个for循环,五颗空星星就出来了,哈哈

for (int i = 0;i < starCount;i++) {
   starEmptyDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
   starEmptyDrawable.draw(canvas);
  }

20171485202627.jpg

for (int i = 0;i < starCount;i++) {
   starEmptyDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
   starEmptyDrawable.draw(canvas);
  }
  for (int i = 0;i < starCount -1;i++) {
   starFillDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
   starFillDrawable.draw(canvas);
  }

上面几行代码成功强行装成了一个评了4分的 20171485217057.jpg

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石语H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值