1.效果

2.实现原理

1.根据分数分别画选中的星星、正常的星星

2.onTouchEvent 中获取点击、滑动的位置,修改分数,在通过invalidate() 去重新绘制

核心代码:

    @Override
protected void onDraw(Canvas canvas) {
int startWidth = mStarFocusBitmap.getWidth();
for (int i = 0; i < mMarks; i++) {
int left = getPaddingLeft() + i * startWidth + i * mInterval;
int top = getPaddingTop();
if (mCurrentMarks > i) {
canvas.drawBitmap(mStarFocusBitmap, left, top, null);
} else {
canvas.drawBitmap(mStarNormalBitmap, left, top, null);
} }
}
    @Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
float moveX = event.getX();
int marks = (int) ((moveX / (mStarFocusBitmap.getWidth() + mInterval)) + 1);
if (marks != mCurrentMarks) {
mCurrentMarks = marks;
invalidate();
}
} return true;
}

源码地址

最新文章

  1. GPG终极指南(加密/签名)
  2. html5标签知多少
  3. vsCode 添加浏览器调试和js调试的方法
  4. centos 7.0 查看内存使用情况 和 查看硬盘使用情况
  5. 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)
  6. ANDROID自定义视图——onMeasure流程,MeasureSpec详解
  7. HDU 1877 另一个版本 A+B
  8. POJ 2506 Tiling
  9. 视觉SLAM中相机详解
  10. 你必须知道的session与cookie
  11. 踩过的坑—iphone手机H5样式兼容总结
  12. Android 数据库框架总结(转)
  13. [LeetCode_98]Validate Binary Search Tree
  14. Mybatis的多对多映射
  15. systemd开机启动
  16. Ubuntu使用apt-get upgrade升级时出错
  17. SQL学习笔记四(补充-2)之MySQL多表查询
  18. 洛谷P2676 超级书架 题解
  19. 电子书mobi的格式详解
  20. mysql 导入 csv文件中数据,只能导入第一行

热门文章

  1. linux设置共享文件夹 - samba
  2. Event Loop - 事件队列
  3. ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161
  4. 教学之Treap
  5. MongoDB 分片集群配置
  6. JVM(五)-垃圾收集器入门
  7. 如何利用小熊派获取MPU6050六轴原始数据
  8. 第7章 Python类型、类、协议目录
  9. 【JAVA】SSM开源项目源码--城市学院移动后勤-毕业设计(Spring SpringMvc Mybatis Mui Redis )
  10. CSP-S2020 浙江 游记