背景
很多时候要用到loading的展示,近期发现自己对于进度条的知识掌握的不是那么牢固,所以来进行一次复习。众所周知,进度条就是展示进度的;或者用来等待某些事件的完成,例如加载资源,下载资源等等。那么一个进度条应该如何写呢。
基本使用
首先在layout中定义控件
<ProgressBar
android:id="@+id/ver_banner_download_progressbar3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:max="100" />
然后再activity中找到并使用它,以下是用kotlin编写的,很方便,简洁。
val progressbar3 = findViewById<ProgressBar>(R.id.ver_banner_download_progressbar3)
val handler = android.os.Handler()
handler.postDelayed(object : Runnable {
override fun run() {
if (progress == 100) {
return
}
progress += 1
progressbar3.progress = progress
progressbar3.secondaryProgress = progress + 1
handler.postDelayed(this, 1000)
}
}, 1000)
默认效果是圆形的,在哪里一直转呀转,样式很难看。所以接下来我们来看如何自定义样式。
样式的使用
我们再原来xml的基础是改进一下,我用的是横版样式。
<ProgressBar
android:id="@+id/ver_banner_download_progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:max="100"
android:progressDrawable="@drawable/test_video_seek_progress" />
这么可以看到我多加了两个,分别是style和android:progressDrawable,其中style指定的是横版样式,另外一个progressDrawable设定的是进度条的的进度,背景,二级进度长什么样子。我们看一下test_video_seek_progress长什么样子。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置进度条背景 -->
<item android:id="@android:id/background">
<shape>
<solid android:color="#cc999999"/>
<size android:height="13dp"/>
<!-- 设置进度条的圆角 -->
<corners android:radius="1.5dp"/>
</shape>
</item>
<!-- 设置进度条的二级进度 -->
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="@android:color/holo_blue_dark"/>
<size android:height="13dp"/>
<corners android:radius="1.5dp"/>
</shape>
</clip>
</item>
<!-- 正常的进度设置 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="@android:color/holo_blue_bright"/>
<size android:height="13dp"/>
<corners android:radius="1.5dp"/>
</shape>
</clip>
</item>
</layer-list>
效果图如下:
这种都是纯色的进度,以颜色为打底的,当然还有另外的样式,下面是另外一种:
最顶层的作为一张图片来展示的,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<solid android:color="#9dadb2"/>
<size android:height="4.0dip"/>
<corners android:radius="10dp"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="#a8daea"/>
<size android:height="4.0dip"/>
<corners android:radius="10dp"/>
</shape>
</clip>
</item>
<!-- 可以设置图片作为进度 -->
<item android:id="@android:id/progress" android:drawable="@drawable/progressbar_progress">
<clip>
<shape>
<size android:height="4.0dip"/>
<corners android:radius="10dp"/>
</shape>
</clip>
</item>
</layer-list>
结束语:关于Progressbar还有很多实用方式,我这里仅仅列出其中一种,欢迎大家交流