没有合适的资源?快使用搜索试试~ 我知道了~
主要为大家详细介绍了Android实现多段颜色进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
资源推荐
资源详情
资源评论
Android实现多段颜色进度条效果实现多段颜色进度条效果
主要为大家详细介绍了Android实现多段颜色进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一
下
多段颜色的进度条实现思路,供大家参考,具体内容如下
这个进度条其实相对简单.
这里可以把需要绘制的简单分为两个部分
1.灰色背景部分
2.多段颜色的进度部分
考虑到实际绘制中,分段部分不太容易根据进度值进行动态绘制.
故把多段颜色部分作为背景进行绘制,实际的灰色部分根据进度值变化,达到多段颜色部分进度变化的效果.
实现步骤实现步骤
1.自定义View 来绘制进度条
2.定义背景及进度条绘制所需的画笔
private Paint backgroundPaint, progressPaint, linePaint;//背景和进度条画笔
3.定义不同颜色区域的矩阵数组(这里将进度分为多个色块)
4.定义颜色数组,以及所占比例的数组.后面根据比例和颜色进行绘制
private Rect progressRect = new Rect();//进度条;
private Rect backgroundRects[];//背景矩形区域
private float weights[];//每个区域的权重
private int colors[];//颜色
5.定义进度值,监听等杂项.
private float progress = 10, maxProgress = 100;//进度和最大进度
private OnProgressChangeListener listener;
6.在draw方法中进行绘制
7.背景色块的绘制
//绘制背景颜色块
int x = 0, y = getHeight();
int progressX = (int) getWidthForWeight(progress, maxProgress);
for (int i = 0; i < colors.length; i++) {
Rect rect = backgroundRects[i];
backgroundPaint.setColor(colors[i]);
int width = (int) (getWidthForWeight(weights[i], totalWeight));
rect.set(x, 0, x + width, y);
x += width;//计算下一个的开始位置
canvas.drawRect(rect, backgroundPaint);//绘制矩形
}
8.进度条及分割线的绘制
progressRect.set(0, 0, progressX, getHeight());//设置进度条区域
canvas.drawRect(progressRect, progressPaint);//绘制进度条
for (int i = 0, lineX = 0; i < colors.length; i++) {
int width = (int) (getWidthForWeight(weights[i], totalWeight));
//绘制矩形块之间的分割线
lineX = lineX + width;
if (lineX < progressX) {//给已经走过了的区域画上竖线
canvas.drawLine(lineX, 0, lineX, getHeight(), linePaint);
}
}
最后看看实现的效果图
资源评论
weixin_38570854
- 粉丝: 5
- 资源: 931
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功