📜  如何在Android中创建循环确定的ProgressBar?(1)

📅  最后修改于: 2023-12-03 15:38:30.356000             🧑  作者: Mango

如何在Android中创建循环确定的ProgressBar?

当您在Android应用程序中需要展示长时间操作的进度时,可以使用ProgressBar控件。

下面是如何创建循环确定的ProgressBar的步骤:

  1. 首先,在你的布局文件中添加ProgressBar控件:
<ProgressBar
    android:id="@+id/progress_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="false"
    android:max="100"
    android:progress="0"
    android:progressDrawable="@drawable/progress_drawable" />

其中,需要注意的几个属性:

  • indeterminate:指定是否是一个不确定进度的ProgressBar。在循环确定的ProgressBar中,需要将其设置为false。

  • max:ProgressBar允许的最大值,设置为100。

  • progress:进度的初始值,设置为0。

  • progressDrawable:指定了ProgressBar的外观。需要定义一个drawable资源作为循环的ProgressBar。

  1. 在你的代码中定义一个ProgressBar对象并获取对应的View:
ProgressBar progressBar = findViewById(R.id.progress_bar);
  1. 在长时间的操作中,使用一个for循环来模拟进度的增长,每次循环后更新进度条的值:
for (int i = 0; i <= 100; i++) {
    progressBar.setProgress(i);
    try {
        Thread.sleep(50); // 模拟长时间运行的操作
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
  1. 为了在ProgressBar中显示样式,需要定义一个drawable资源,例如这里定义了一个在圆形中心旋转的ProgressBar:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="360">

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false">

        <size
            android:width="48dp"
            android:height="48dp" />

        <gradient
            android:centerColor="#00ff00"
            android:centerY="0.50"
            android:endColor="#00000000"
            android:startColor="#00ff00"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

这个ProgressBar将会产生一个圆形的进度条,其中心为一个绿色的圆,指示进度。当进度增长时,绿色圆的角度也会增长,直到进度条填满。

最终的效果如下:

Loop Determinate ProgressBar

结论

创建循环确定的ProgressBar只需要在布局文件中添加ProgressBar控件,并指定一些属性。在代码中,使用for循环模拟操作并更新进度条的值。最后,为了让ProgressBar显示样式,需要定义一个drawable资源。