- 背景
- 参考学习使用
- 为什么使用MaterialProgressBar?
- 预览
- 集成
- 使用
- 使用widget
背景
项目中不可避免要利用网络获取服务器数据,或者是通过其他渠道获取。有时候你需要等待一段时间才能将数据拿到。简单来说从你发请求到服务器,再从服务器返回数据是需要一定时间的。那么如果这段时间内,不提示用户当前正在获取数据,那么用户体验会稍差,因为他认为是不是出问题了,为什么页面没有响应,页面的显示都是空白。所以这个时候来一个加载进度提示,就能有效的避免这一误体验。
参考学习使用
我找的是github上的一个开源项目,而且也是我比较喜欢的进度样式,水平和圆形的加载进度都是一直变化的,不需要数值显示。个人觉得喜欢这种样式,比较简洁干净,不带数值也比较符合大众。当然你要是喜欢带数值的进度,也是可以做到的,这里我就不细说了。
下面是github的项目地址,大家也可以自己去好好的学习分享。
为什么使用MaterialProgressBar?
- Android 4.0+的一致外观
- Correct tinting across platforms
- 能够删除框架ProgressBar的padding
- 能够隐藏框架水平进度条的进度背景
- 能够显示确定的循环过程
- Used as a drop-in replacement for framework ProgressBar
预览
Android 4.4.4
三星Android 5.0.1(本机实现无法着色)
Android 6.0.1
集成
添加依赖,然后同步一下即可使用该开源库
implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2'
使用
您可以简单地使用MaterialProgressBar小部件,也可以在常规的ProgressBar上从这个库中设置drawables。
这里我就只介绍小部件的用法,使用drawable的方法大家可以自行参考github上项目的使用手册,这里就不细说了。
使用widget
只需将ProgressBar替换为MaterialProgressBar,并记住要应用相应的样式和属性来实现正确的行为。
下面给出我项目中测试通过的两种进度的写法。
例如,水平进度条写法为:
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:indeterminate="true"
app:mpb_progressStyle="horizontal"
style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
例如,圆形条写法为:
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:indeterminate="true"
android:layout_gravity="center"
app:mpb_progressStyle="circular"
app:mpb_determinateCircularProgressStyle="dynamic"
style="@style/Widget.MaterialProgressBar.ProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
手机上效果图示如下:
这里可以看到,上面的是水平进度,下面的是圆形进度。这里不是gif图,所以看起来效果没那么炫,大家自己去试试看就能看到啦!真的还阔以哦!
可用的自定义属性:
-
app:mpb_progressStyle
:可绘制的进度样式:圆形或水平的。默认为圆形 -
app:mpb_setBothDrawables
:在这个进度条上是否应该设置确定的和不确定的drawables。默认为false(用于性能) -
app:mpb_useIntrinsicPadding
:是否进度的绘制使用它内部的padding。默认值为true。 -
app:mpb_showProgressBackground
:进度绘制是否应该显示进度背景。对水平进度的默认值为true,否则为false。
也支持与之相关的8个属性,如app: mpb_progres进位和app:mpb_progressTintMode,这样可以控制进度绘制的着色。默认的着色颜色是?colorControlActivated,默认的着色模式是src_in。
这里就基本介绍了一些基本的属性,大家最好自己去实现,毕竟影响的因素也有很多。更多的使用方法和介绍,大家可以通过上面的项目的github地址学习。
A little bit of progress every day!Come on!