Material Linear ProgressBar

根据材料文件

线性进度指示器应始终从 0%填充到 100%,并且永远不会减少值。
它应该由标题或表格边缘上的条形表示,并显示和消失。

要使用材质 Linear ProgressBar,只需在 xml 中使用:

<ProgressBar
    android:id="@+id/my_progressBar"  
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

https://i.stack.imgur.com/rB8wu.gif

不定

要创建不确定的 ProgressBar,请将 android:indeterminate 属性设置为 true

<ProgressBar
    android:id="@+id/my_progressBar"  
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="true"/>

确定的

要创建确定的 ProgressBar,请将 android:indeterminate 属性设置为 false 并使用 android:maxandroid:progress 属性:

<ProgressBar  
    android:id="@+id/my_progressBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:indeterminate="false"
    android:max="100"
    android:progress="10"/>

只需使用此代码更新值:

ProgressBar progressBar = (ProgressBar) findViewById(R.id.my_progressBar);  
progressBar.setProgress(20);

缓冲

要使用 ProgressBar 创建缓冲效果,请将 android:indeterminate 属性设置为 false 并使用 android:maxandroid:progressandroid:secondaryProgress 属性:

<ProgressBar  
    android:id="@+id/my_progressBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="false"
    android:max="100"
    android:progress="10"
    android:secondaryProgress="25"/>

缓冲区值由 android:secondaryProgress 属性定义。
只需使用此代码更新值:

ProgressBar progressBar = (ProgressBar) findViewById(R.id.my_progressBar);
progressBar.setProgress(20);
progressBar.setSecondaryProgress(50);  

不确定和确定

要获得这种 ProgressBar,只需使用 android:indeterminate 属性的不确定 ProgressBar 为 true。

<ProgressBar  
    android:id="@+id/progressBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:indeterminate="true"/>

然后,当你需要从不确定切换到确定进度时使用 setIndeterminate() 方法。

ProgressBar progressBar = (ProgressBar) findViewById(R.id.my_progressBar);  
progressBar.setIndeterminate(false);