5.自定义view-评分控件RatingBar
2024-09-02 14:35:34
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;
}
最新文章
- GPG终极指南(加密/签名)
- html5标签知多少
- vsCode 添加浏览器调试和js调试的方法
- centos 7.0 查看内存使用情况 和 查看硬盘使用情况
- 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)
- ANDROID自定义视图——onMeasure流程,MeasureSpec详解
- HDU 1877 另一个版本 A+B
- POJ 2506 Tiling
- 视觉SLAM中相机详解
- 你必须知道的session与cookie
- 踩过的坑—iphone手机H5样式兼容总结
- Android 数据库框架总结(转)
- [LeetCode_98]Validate Binary Search Tree
- Mybatis的多对多映射
- systemd开机启动
- Ubuntu使用apt-get upgrade升级时出错
- SQL学习笔记四(补充-2)之MySQL多表查询
- 洛谷P2676 超级书架 题解
- 电子书mobi的格式详解
- mysql 导入 csv文件中数据,只能导入第一行
热门文章
- linux设置共享文件夹 - samba
- Event Loop - 事件队列
- ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161
- 教学之Treap
- MongoDB 分片集群配置
- JVM(五)-垃圾收集器入门
- 如何利用小熊派获取MPU6050六轴原始数据
- 第7章 Python类型、类、协议目录
- 【JAVA】SSM开源项目源码--城市学院移动后勤-毕业设计(Spring SpringMvc Mybatis Mui Redis )
- CSP-S2020 浙江 游记