ProgressBar及其样式使用详解

QuibblerQuibbler 2020-02-22 约 11 分钟 4247 次阅读

ProgressBar

1、基本使用

和普通控件一样,在布局中添加ProgressBar,布局中设置一些属性

<ProgressBar
        //设置ProgressBar样式
        style="@style/Widget.AppCompat.ProgressBar.Horizontal
        
        //进度条最大值
        android:max="100"
        
        //一级进度条
        android:progress="60"
        
        //显示二级进度条
        android:secondaryProgress="80"
        
        //非精度显示
        android:indeterminate="true" />

还可以在代码中设置一些属性:

//设置第一进度
    setProgress(int) 
    
    //设置第二进
    setSecondaryProgress(int) 
    
    //获取第一进度
    getProgress() 
    
    //获取第二进度
    getSecondaryProgress() 
    
    //增加或减少第一进度
    incrementProgressBy(int) 
    
    //增加或减少第二进度
    incrementSecondaryProgressBy(int) 
    
    //获取最大进度
    getMax()

2、二级进度:secondaryProgress

一般缓存,下载进度显示都会用到二级进度条,使用android:secondaryProgress设置。

场景:音乐缓存的进度就可以是android:secondaryProgress,而音乐播放进度就是android:progress

3、模糊进度:indeterminate

加上这个indeterminate属性之后,进度条不是按照实际进度显示,而是不断的变化:

4、设置样式

官方预定义了一系ProgressBar的样式默认是转圈圈的圆圈。

Widget.ProgressBar.Horizontal
    Widget.ProgressBar.Small
    Widget.ProgressBar.Large
    Widget.ProgressBar.Inverse
    Widget.ProgressBar.Small.Inverse
    Widget.ProgressBar.Large.Inverse

①使用系统的style

style="@style/Widget.AppCompat.ProgressBar.Horizontal"

②使用系统attr

style="?android:attr/progressBarStyleHorizontal"



5、自定义样式

参考预定义ProgressBar的样式,看看是如何实现的。看看定义的drawable背景文件progress_horizontal_holo_dark.xml

在通过progressDrawable属性,设置drawable背景

<item name="progressDrawable">@drawable/progress_horizontal_holo_dark</item>

定义一个drawable/progressbar_bg.xml

<?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>
            <corners android:radius="6dp" />
            <solid
                android:color="#ffffff"
                />
            <size
                android:height="12dp"
                />
            <stroke
                android:width="2dp"
                android:color="#c4e9ff"
                />
            <!-- <gradient
                 android:startColor="#ff9d9e9d"
                 android:centerColor="#ff5a5d5a"
                 android:centerY="0.75"
                 android:endColor="#ff747674"
                 android:angle="270"
                 />-->
        </shape>
    </item>
    <!-- 第二进度条 -->
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="6dp" />
                <gradient
                    android:startColor="#b9a4ff"
                    android:centerColor="#c6b7ff"
                    android:centerY="0.75"
                    android:endColor="#c3b2ff"
                    android:angle="270"
                    />
                <size
                    android:height="12dp"
                    />
            </shape>
        </clip>
    </item>
    <!-- 第一进度条 -->
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="6dp" />
                <!--<solid
                    android:color="@color/c_0061dd"
                    />-->
                <gradient
                    android:startColor="#5cacff"
                    android:centerColor="#0061dd"
                    android:endColor="#0061dd"
                    android:angle="45"
                    />
                <size
                    android:height="12dp"
                    />
                <stroke
                    android:width="2dp"
                    android:color="@android:color/transparent"
                    />
                <!--<gradient
                    android:startColor="#57e8ff"
                    android:centerColor="#74ebff"
                    android:centerY="0.75"
                    android:endColor="#8eefff"
                    android:angle="270"
                    />-->
            </shape>
        </clip>
    </item>
</layer-list>

设置给ProgressBar:

android:progressDrawable="@drawable/progressbar_bg"

第一进度条shape使用了gradient配色渐变,进度条效果:

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w