美文网首页高级UI
ProgressBar使用

ProgressBar使用

作者: NoBugException | 来源:发表于2019-08-22 09:37 被阅读6次

进度条在项目中已经被广泛使用,Android原生的进度条控件是ProgressBar,这个控件必须要了解的,但是一般我们很少会直接使用原生控件,为了美观,一般都会自定义一个进度条。本章的重点不是自定义进度条,而是了解原生控件ProgressBar的基本使用。

首先,第一个需要讲解的是ProgressBar样式,也是本章最重要的知识。

(1)系统样式

ProgressBar的默认样式是progressBarStyle(圆形进度条),写法如下:

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

效果如下:

31.gif

为什么说默认样式是progressBarStyle呢?可以从源码中可以看到。

图片.png

ProgressBar的第二个构造方法就是初始化布局所用到的,其中有个参数就是传递默认的样式。(可能在低SDK版本中的默认样式不是这样的)

那么它还有什么样式呢?

  • progressBarStyleHorizontal:横向进度条样式

效果图如下:

图片.png
  • progressBarStyleInverse:反转圆形进度条

      style="?android:attr/progressBarStyleInverse"
    

这个目前设置之后没有达到反转的效果。(就不再调查原因了)

  • progressBarStyleLarge:大型圆形进度条

      style="?android:attr/progressBarStyleLarge"
    

就是比正常的要大一些。

  • progressBarStyleLargeInverse:大型反转圆形进度条

      style="?android:attr/progressBarStyleLargeInverse"
    

这个同样没有看到反转效果。(就不再调查原因了)

  • progressBarStyleSmall:小型圆形进度条

      style="?android:attr/progressBarStyleSmall"
    
  • progressBarStyleSmallInverse:小型反转圆形进度条

      style="?android:attr/progressBarStyleSmallInverse"
    

这个同样没有看到反转效果。(就不再调查原因了)

  • progressBarStyleSmallTitle:标题栏进度条

      style="?android:attr/progressBarStyleSmallTitle"
    
  • Widget.AppCompat.ProgressBar:默认进度条(圆形进度条)

      style="@style/Widget.AppCompat.ProgressBar"
    
  • Widget.AppCompat.ProgressBar.Horizontal:横向进度条

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

以上就是所有的系统样式了,需要注意的是,随着Android SDK版本的提升,也许系统样式会有所变化,这里不建议学习所有的系统样式。系统样式只需要学习两种即可:圆形进度条和横向进度条,即progressBarStyleprogressBarStyleHorizontal

(2)ProgressBar的常用属性
  • indeterminate:设置进度条的进度是否不确定
<ProgressBar
    android:id="@+id/progressBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"/>

    progressBar.setIndeterminate(true);

也就是说,如果indeterminate设置为true,那么ProgressBar的进度将具有不确定行,那么圆形进度条将会不停的转动,横向进度条的进度也在不停的跳动。横向进度条进度跳动效果如图:

32.gif
  • indeterminateBehavior:定义当进度达到最大时,不确定模式的表现;该值必须为repeat或者cycle,repeat表示进度从0重新开始;cycle表示进度保持当前值,并且回到0
<ProgressBar
    android:id="@+id/progressBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    android:indeterminateBehavior="cycle"/>

这个属性貌似也没有效果。

  • indeterminateDuration:设置进度不确定进度条的动画时间

  • indeterminateOnly:限制为不定模式

  • interpolator:设置动画的插值器

  • max:设置最大进度

  • min:设置最小进度

  • maxHeight:设置最大高度

  • miniHeight:设置最小高度

  • maxWidth:设置最大宽度

  • minWidth:设置最小宽度

  • progress:设置当前进度

  • secondaryProgress:设置二级进度值

  • progressDrawable:设置进度条的背景

  • mirrorForRtl:定义了相关画板如果需要反映在RTL模式

以上就是ProgressBar的常用属性了,但是,部分属性已经失效了,当Android SDK的版本迭代中,还不清楚有多少属性将失去作用,但ProgressBar的样式应该不会失去作用,为了使ProgressBar更加美观,可以从ProgressBar的样式入手。

(3)自定义样式

效果如下:

33.gif

代码如下:

<ProgressBar
    android:id="@+id/progressBar"
    style="@style/MyProgressBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

MyProgressBar

<style name="MyProgressBar" parent="@android:style/Widget.ProgressBar.Horizontal">
    <item name="android:maxHeight">50dip</item>
    <item name="android:minHeight">10dip</item>
    <item name="android:indeterminateOnly">false</item>
    <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
    <item name="android:progressDrawable">@drawable/progressbar_bg</item>
</style>

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="5dip" />
            <gradient
                android:angle="0"
                android:endColor="#00000000"
                android:startColor="#ff00ff" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <scale
                android:scaleWidth="100%"
                android:drawable="@drawable/progressbar_shape"/>
        </clip>
    </item>
</layer-list>

progressbar_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <corners android:radius="5dip" />
    <gradient
        android:angle="0"
        android:endColor="#0BDB14"
        android:startColor="#5EB962" />

</shape>

以上就是ProgressBar的简单实用了,等后期为大家展示各种自定义进度条的案例吧。

[本章完...]

相关文章

  • ProgressBar详解

    一、ProgressBar基础使用 **(1)默认ProgressBar (2)ProgressBar属性 and...

  • 原生小程序-进度条

    组件 ProgressBar.js ProgressBar.wxml ProgressBar.wxss 使用 说明...

  • ProgressBar使用

    进度条在项目中已经被广泛使用,Android原生的进度条控件是ProgressBar,这个控件必须要了解的,但是一...

  • Python压力测试

    安装progressbar 使用多线程测试代码

  • Android零基础入门第53节:拖动条SeekBar和星级评分

    前面两期都在学习ProgressBar的使用,关于自定义ProgressBar的内容后期会继续学习的,本期先来学习...

  • ProgressBar使用详解

    ProgressBar是Android下的进度条,也是为数不多的直接继承于View类的控件,直接子类有AbsSee...

  • 自定义progressbar

    progressbar 自定义progressbar 进度条 圆形progressbar 世界因为有了互相帮助,...

  • tqdm && progressbar的使用

    tqdm 效果如下: 只要是可迭代的对象,均可使用使用tqdm progressbar 输出: 其中widgets...

  • ProgressBar的使用实例

    以下内容有三方式设置进度条 设置一个简单的进度条 布局 效果图 设置一个进度条,类似于歌曲播放一样,显示不同颜色的...

  • 安卓中踩过的坑

    1、进度条ProgressBar的使用: android:drawable 指定drawable资源,如果不设置该...

网友评论

    本文标题:ProgressBar使用

    本文链接:https://www.haomeiwen.com/subject/xawpsctx.html