Android中加载进度条实战简述

背景

项目中不可避免要利用网络获取服务器数据,或者是通过其他渠道获取。有时候你需要等待一段时间才能将数据拿到。简单来说从你发请求到服务器,再从服务器返回数据是需要一定时间的。那么如果这段时间内,不提示用户当前正在获取数据,那么用户体验会稍差,因为他认为是不是出问题了,为什么页面没有响应,页面的显示都是空白。所以这个时候来一个加载进度提示,就能有效的避免这一误体验。


参考学习使用

我找的是github上的一个开源项目,而且也是我比较喜欢的进度样式,水平和圆形的加载进度都是一直变化的,不需要数值显示。个人觉得喜欢这种样式,比较简洁干净,不带数值也比较符合大众。当然你要是喜欢带数值的进度,也是可以做到的,这里我就不细说了。

下面是github的项目地址,大家也可以自己去好好的学习分享。

MaterialProgressBar


为什么使用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!

猜你喜欢

转载自blog.csdn.net/csdnzouqi/article/details/80845893