为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 android怎么自定义进度条

android怎么自定义进度条

2018.09.12 20:22 3939浏览

先上效果图android自定义进度条

看到这样的一个设计图, 首先是拆分到底怎么来画这个图。

1,一个进度的圆。

2 ,2个有半圆的进度,一个实心,一个空心

3,下面的半圆进度显示(文字 和 背景框)

初步坐标稿

android自定义进度条

了解这些了,就开始计算具体的坐标,

自定义view第一步

onMeasure

把整个看成一个控件,那么他的高度,就是进度圆的高度,和下面进度文字背景框的高度。

宽度就是外面空心进度条的宽度。

android自定义进度条

然后onDraw

1 先画外面空心的进度(设计稿中红色的那部分)

画一个2边都是半圆的方法

android自定义进度条

RectF 矩形 参赛

left、top、right、bottom的值是:

left:是矩形距离左边的X轴 ( 进度圆的一半)

top:是矩形距离上边的Y轴 (这个高度是进度圆的半径减去空心进度的高度的一半)

right:是矩形距离右边的X轴(控件的宽度减去进度圆的一半)

bottom:是矩形距离下边的Y轴(进度圆的一半加上空心进度的高度的一半)

参赛 rx是指在x轴的幅度,同理 ry在Y轴上的幅度(这里都设置为空心进度条的高度的一半)

因为是空心的 paint必须设置为空心

outLinePaint.setStyle(Paint.Style.STROKE);

android自定义进度条

然后画内进度条

步骤一样,只是参数有点变动

相对外进度 它的左右上下都 向内移动的相同的距离(外进度的高度 减去内进度的高度, 然后在取值的一半))

所以RectF 的left top 加上上面所说的距离 bottom 减去距离

right 由于内进度要一直变动,那么他的right就要重新计算。

android自定义进度条

看图,我们把箭头所指示的线的长度设置为进度总长度,那么他的长度就是

进度条高度+偏移量+(view的总长度-spaceA -spaceB)*进度



android自定义进度条

3 画圆。

canvas.drawCircle(x,y,radius,paint)

y固定,圆的一般,radius 也是固定

x要计算

当进度为0的时候 x在 x=radius 在x=100的时候 x=View的宽度-radius

那么 x=radius+(view的宽度-radius)*进度

android自定义进度条

android自定义进度条

下面画字,记住进度字的背景框的坐标中心和随着圆的中心在同一个x坐标上,就Y坐标不一样而已

(注意 当开始和结尾的时候,由于字体的背景框的长度大于进度圆的直径,所有开始和结尾要判断,当前的进度圆的中心时候大于进度字的背景框的长度的一般。然后在做处理)

字体居中画就ok了,居然就看代码的实现。

另外 设置progress的时候刷新控件就行了android自定义进度条

最后github路径

https://github.com/CQBOBOZHU/NumberProgress

原文链接:http://www.apkbus.com/blog-914653-68359.html

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
60
获赞与收藏
327

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

151篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消