admin 管理员组

文章数量: 887021


2023年12月22日发(作者:小程序云开发收费标准)

progressbar的用法

ProgressBar 是 Android 平台中常用的一个视图控件,它用于显示一个表示进度的动态条,可以用于展示下载、上传、转换等操作的进度。ProgressBar 支持多种样式,如水平进度条、圆形进度条等,而且还可以自定义样式,非常灵活和实用。本文将介绍 ProgressBar 控件的用法和实例。

一、ProgressBar 控件的属性

ProgressBar 控件最常用的属性如下表所示:

| 属性名称 | 描述 | | --- | --- | | android:id

| 控件的唯一 id | | android:layout_width | 控件的宽度 | | android:layout_height | 控件的高度 | |

android:layout_margin | 控件的外边距 | |

android:max | 进度条的最大值 | | android:progress |

进度条的当前值 | | android:progressDrawable | 进度条的背景 | | android:secondaryProgress | 二级进度的当前值 | | android:indeterminate | 是否在不知道进度时显示一个不确定的进度条 | |

android:indeterminateDrawable | 不确定进度条的图象资源 | | android:indeterminateDuration | 不确定进度条的动画时长 | | android:minWidth | 进度条的最小宽

度 | | android:minHeight | 进度条的最小高度 | |

android:visibility | 控件的可见性 |

ProgressBar 的属性可用于配置进度条的样式和行为,下面将介绍其中一些重要的属性。

1. max 和 progress

max 属性用于设置进度条的最大值,progress 属性用于设置进度条的当前进度值。如果 max 和 progress 的值相等,则进度条显示为满的状态。通过调用 ProgressBar

的 setMax() 和 setProgress() 方法,也可以动态地修改

max 和 progress 属性的值。

2. progressDrawable

progressDrawable 属性用于设置进度条的背景。默认情况下,进度条的背景为 Android 的内置样式,但是我们可以通过修改 progressDrawable 属性来自定义进度条的样式,例如将进度条变成渐变色或图片。

以下代码示例演示了如何将进度条的背景设置为渐变色:

```

android:id="@+id/progressBar"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:max="100"

android:layout_marginTop="16dp"

android:layout_marginStart="16dp"

android:layout_marginEnd="16dp"

android:progressDrawable="@drawable/gradient_progress_bar" /> ```

3. secondaryProgress

secondaryProgress 属性用于设置进度条的二级进度。当我们需要在进度条上同时显示两种进度(如下载进度和缓存进度),就可以使用这个属性。以下代码示例演示了如何同时显示主进度和二级进度:

``` (100);

gress(50);

ondaryProgress(75); ```

4. indeterminate

indeterminate 属性用于设置当进度值未知时是否显示一个不确定的进度条。如果这个属性的值为 true,则进度条将不显示当前进度值,而是显示动态的旋转图标,用于表示操作正在进行中。以下代码示例演示了如何显示一个不确定的进度条:

```

android:id="@+id/progressBar"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:indeterminate="true" /> ```

这段代码会在屏幕中央显示一个不确定的进度条。

5. indeterminateDrawable

indeterminateDrawable 属性用于设置不确定进度条的图像资源。默认情况下,不确定进度条的图像资源也是

Android 的内置样式,但是我们也可以通过修改

indeterminateDrawable 属性来自定义不确定进度条的样式。

6. minWidth 和 minHeight

minWidth 和 minHeight 属性用于设置进度条的最小宽度和最小高度。如果进度条的高度或宽度小于这个属性的值,则会自动调整为最小值。

7. visibility

visibility 属性用于设置控件的可见性。可取的值包括 visible、invisible 和 gone。其中,gone 表示控件不可见,并且控件所占的空间也会被释放,invisible 表示控件不可见,但是控件所占的空间不会被释放。

二、ProgressBar 控件的使用

ProgressBar 控件的使用比较简单,我们只需要在布局 XML 文件中定义好控件的样式和属性,然后在代码中动

态地修改进度值即可。以下代码示例演示了如何使用进度条来模拟下载进度:

``` ProgressBar progressBar =

findViewById(ssBar); Button button =

findViewById();

lickListener(new

kListener() { @Override public

void onClick(View v) { new Thread(new

Runnable() { @Override

public void run() { for (int i = 0;

i <= 100; i++)

{ gress(i);

try { (50); //

模拟下载操作 } catch

(InterruptedException e)

{ tackTrace();

} } } }).start(); } }); ```

在上面的代码中,我们先通过 findViewById() 方法获取到 ProgressBar 控件和 Button 控件,然后在按钮的点击事件中开启一个新的线程模拟下载操作,并在每个循

环中修改 ProgressBar 的进度值。通过这种方式,我们可以在界面上实时地显示下载进度。

三、自定义 ProgressBar 样式

ProgressBar 控件支持自定义样式,可以通过修改

progressDrawable 或 indeterminateDrawable 属性来实现。如果希望自定义更复杂的样式,可以通过继承

ProgressBar 类并重写其 onDraw() 方法来实现。

以下代码示例演示了如何自定义一个圆形进度条的样式:

``` public class CircularProgressBar extends

ProgressBar { private static final int

DEFAULT_COLOR = ; private Paint

paint; private int color; private float

strokeWidth; private RectF rectF;

public CircularProgressBar(Context context)

{ this(context, null); }

public CircularProgressBar(Context context,

AttributeSet attrs) { this(context, attrs,

0); }

public CircularProgressBar(Context context,

AttributeSet attrs, int defStyleAttr)

{ super(context, attrs, defStyleAttr);

paint = new Paint(); rectF = new RectF();

TypedArray typedArray =

StyledAttributes(attrs,

arProgressBar); color =

or(arProgressBar_cpb_color, DEFAULT_COLOR); strokeWidth =

ension(arProgressBar_cpb_strokeWidth,

getResources().getDimension(t_stroke_width)); e(); }

@Override protected synchronized void

onDraw(Canvas canvas)

{ (canvas); int centerX

= getWidth() / 2; int centerY = getHeight()

/ 2; int radius = centerX - (int)

(strokeWidth / 2); (centerX -

radius, centerY - radius, centerX + radius, centerY

+ radius); or(color);

okeWidth(strokeWidth);

le();

c(rectF, 0, 360 * getProgress() /

getMax(), false, paint); } } ```

在上面的代码中,我们继承了 ProgressBar 类并重写了其 onDraw() 方法,在这个方法中绘制圆形进度条的样式。我们还添加了两个属性,cpb_color 和

cpb_strokeWidth,用于设置圆形进度条的颜色和粗细。在使用时,可以在布局 XML 文件中通过 cpb_color 和

cpb_strokeWidth 属性来修改圆形进度条的颜色和粗细。

```

android:id="@+id/circularProgressBar"

android:layout_width="96dp"

android:layout_height="96dp"

app:cpb_color="@color/colorPrimary"

app:cpb_strokeWidth="6dp" /> ```

通过上面的代码可以看到,我们创建了一个自定义

CircularProgressBar 控件,并通过定义属性的方式来配置我们的样式。这就是 ProgressBar 的自定义使用方式。

四、总结

ProgressBar 控件是 Android 平台中非常实用的视图控件,可以用于展示各种操作的进度。本文介绍了

ProgressBar 控件的常用属性、用法和自定义方法,希望读者可以通过这篇文章更好地掌握 ProgressBar 的应用方法和技巧。


本文标签: 进度条 属性 用于 控件 样式