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 的应用方法和技巧。
版权声明:本文标题:progressbar的用法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703225327h443003.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论