最近有个项目,里面要用到进度球,类似于360的流量球或是迅雷下载进度球效果,经过一段时间的琢磨,实现了如下效果的自定义控件。
接下来一起看看这个控件的使用方法吧!
添加依赖
- 在外层build.gradle中添加如下代码:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- 在项目build.gradle中添加依赖:
dependencies {
...
implementation 'com.github.BillWang514:WaveProgressView:1.2.1'
}
控件的使用
在布局XML文件中引用com.bluefire.widget.WaveProgressView标签,并设置相关属性即可。
...
<com.bluefire.widget.WaveProgressView
android:id="@+id/waveProgressView"
android:layout_width="200dp"
android:layout_height="200dp"
app:submerged_textColor="#ffffff"
app:center_textColor="#00695C"
app:bindingText="bottom_text"
app:stroke_width="4dp"
app:bottom_text="40%"
app:center_text="10"
app:top_text="剩余订单"
app:max="120" />
...
XML属性
属性 | 说明 |
---|---|
app:top_text | 设置顶部字体的内容 |
app:top_textSize | 设置顶部字体大小 |
app:top_textColor | 设置顶部字体颜色 |
app:center_text | 设置中间字体的内容 |
app:center_textSize | 设置中间字体的大小 |
app:center_textColor | 设置中间字体的颜色 |
app:bottom_text | 设置底部字体的内容 |
app:bottom_textSize | 设置底部字体的大小 |
app:bottom_textColor | 设置底部字体的颜色 |
app:wave_color | 定义波浪的颜色 |
app:wave_height | 定义波峰高度 |
app:stroke_color | 定义外环的颜色 |
app:stroke_width | 定义外环的宽度,默认5dp |
app:submerged_textColor | 被波浪淹没后字体颜色 |
app:max | 进度最大值,默认100 |
app:progress | 进度值 |
app:bindingText | 绑定显示进度的Text,可选值有none、top_text、center_text、bottom_text |
以上这些属性大部分都可以在java代码中用SetXXX方法设置。
需要注意以下属性使用:
- layout_width、layout_height
控件宽高的设置,只取较小的那个值作为球的直径,所以最好是layout_width和layout_height设置相同的值,默认宽高是150dp。 - app:submerged_textColor
如果没有设置此属性,那么三个Text的颜色值将不会改变;如果设置了,三个Text均会在被波浪淹没后改变为此颜色值。 - app:bindingText
此属性用来绑定显示进度百分比的Text,其显示优先级高于 top_text | center_text | bottom_text设置的内容,也就是说,只要为其绑定了三个Text中的任一个,不管当初此Text设置了什么内容,都将被进度百分比所覆盖(文章开头的效果图的bindingText=bottom_text),百分比保留两位小数。
总体来说此控件的用法较为简单,本人也就写到这里,如果各位在使用中遇到什么Bug,欢迎留言指出。
Demo源码地址: https://github.com/BillWang514/WaveProgressView.git.