自定义渐进的进度条
结果图
自定义进度条的需求
需求是:他可以根据进度的多少显示进度条,然后同时改变进度显示的透明度和当前进度,比如50%的时候显示的进度是50分,透明度是当前颜色的一半透明度。进度是70%的时候,则是70%的透明度。
自定义进度条的分析
首先我们不是使用Handler实现,当然你也可以使用handler,我们这里完全使用自定义View的形式。 我们需要哪些属性,为了扩展性,我们定义了一些属性,分别如下:
1 | <declare-styleable name="DynamicProgressBarStyle"> |
他们代表的是:
1.目前的进度
2.进度条的颜色
3.更新频率(毫秒)
3.文字大小
4.进度条最大值
5.文字需要的间距
6.文字,只是需要后面的文字,比如当前进度是50分,那么text就应该是”分”
然后,我们需要分析是怎么画的,我们使用一个可以带有边角的RectF去画进度,drawText画文字,每隔一段时间重画,这个时间就是我们自己定义的rate
实现
我们需要的属性有
1 | private Paint mPaint; |
我们有两个使用的方法,一种是通过java代码,一种是通过xml,使用xml的需要find到这个view之后再根据具体的传入progress就好。代码如下:第一种的参数
1 | /** |
使用xml的构造函数
1 | public DynamicProgressBar(Context context, AttributeSet attrs) { |
共同初始化的方法
1 | /** |
draw方法
1 | @Override |
画具体进度条和文字的方法:
1 | /** |
关于代码的解析代码中已经包含了。
测试代码
1 | <?xml version="1.0" encoding="utf-8"?> |
代码设置的进度条
1 | @Override |
结果截图:
好了,这样子就可以完成一个具有透明度变化,进度条前进的进度条了,biubiubiu~。