Android开发之ProgressBar及其style样式的使用

背景

    很多时候要用到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还有很多实用方式,我这里仅仅列出其中一种,欢迎大家交流

发布了15 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/HeartCircle/article/details/100737006
今日推荐