自定义酷炫的进度条
效果图:【目前没有接入外部数据,是自身有的进度在跳】
源码地址:https://gitee.com/tu_erhongjiang/android-progress-bar
实现步骤
绘制背景圆形矩形
画出一个圆形矩形,RectF里面传递的是矩形左上角和右下角的xy坐标,用来确定矩形的位置和大小,然后在内部画出一个原型矩形:
1 | private void drawBackground(Canvas canvas){ |
绘制进度
里面的进度条也是圆形矩形,不过进度条的画笔是实心的。内部进度条矩形的大小略小于外面的矩形(这里是减掉strokeWidth)
1 | private void drawProgress(Canvas canvas){ |
绘制文字
getWidth()/2
是中间位置的x坐标,但从这里开始绘制文字的话不能实现居中的效果,需要计算出文字的长度再把文字整体左移。mTxtWidth/2
是文字的中心位置,也就是把文字的中心位置移到矩形中心位置就可以实现居中的效果:
1 | private void updateText(Canvas canvas) { |
加入动画
让进度条动起来,这里用到的是属性动画中的ValueAnimator
,这种动画不能直接修改view,类似于timer,需要我们传递一个数值范围和执行时间。比如说3秒内从1加到100,然后在接口回调时拿到当前的进度,执行view的invalidate()
方法属性UI
1 | //属性动画 |
完整代码
1 | import android.animation.ValueAnimator; |