Android开发-Android常用组件-ProgressBar进度条
4.8 ProgressBar进度条
- 常用属性
android:max |
进度条的最大值 |
android:progress |
进度条已完成进度值 |
android:progressDrawable |
设置轨道对应的Drawable对象 |
android:indeterminate |
如果设置成true,则进度条不精确显示进度 |
android:indeterminateDrawable |
设置不显示进度的进度条的Drawable对象 |
android:indeterminateDuration |
设置不精确显示进度的持续时间 |
android:secondaryProgress |
二级进度条,类似于视频播放的一条是当前播放进度,一条是 缓冲进度,前者通过progress属性进行设置 |
- 对应的再Java中我们可调用下述方法:
getMax() |
返回这个进度条的范围的上限 |
getProgress() |
返回进度 |
getSecondaryProgress() |
返回次要进度 |
incrementProgressBy(int diff) |
指定增加的进度 |
isIndeterminate() |
指示进度条是否在不确定模式下 |
setIndeterminate(Boolean indeterminate) |
设置不确定模式下 |
- 设置ProgressBar的样式,不同的样式会有不同的形状和模式:
Widget.ProgressBar.Horizontal |
横向进度条(精确模式或模糊模式,这取决于Android:indeterminate) |
Widget.ProgressBar |
中号的圆形进度条(模糊模式) |
Widget.ProgressBar.Small |
小号的圆形进度条(模糊模式) |
Widget.ProgressBar.Large |
大号的圆形进度条(模糊模式) |
Widget.ProgressBar.Inverse |
中号的圆形进度条(模糊模式),该样式适用于亮色背景(例如白色) |
Widget.ProgressBar.Small.Inverse |
小号的圆形进度条(模糊模式),该样式适用于亮色背景(例如白色) |
Widget.ProgressBar.Large.Inverse
|
大号的圆形进度条(模糊模式),该样式适用于亮色背景(例如白色) |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <!-- 系统提供的圆形进度条,fenw小、中、大--> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Small"/> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Large"/> <!-- 系统提供的水平进度条,分为模糊和不模糊--> <ProgressBar android:id="@+id/pb" android:layout_width="match_parent" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Horizontal" android:max="100" android:progress="18"/> <ProgressBar android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:indeterminate="true" //不精确显示进度 style="@android:style/Widget.ProgressBar.Horizontal"/> </LinearLayout>
- 模拟进度条更新:
ProgressBarActivity .java:
package com.example.myapplication; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.ProgressBar; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; public class ProgressBarActivity extends AppCompatActivity { private int currentProgress = 0;//当前进度值 private ProgressBar progressBar; private int maxProgress; //最大进度值 private Handler mHandler = new Handler(){ @Override public void handleMessage(@NonNull Message msg){ super.handleMessage(msg); switch (msg.what){ case 0: progressBar.setProgress(currentProgress); break; } } }; @Override protected void onCreate(@Nullable Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.progress_bar); progressBar = findViewById(R.id.pb); maxProgress = progressBar.getMax(); } @Override protected void onStart(){ super.onStart(); //启动线程模拟加载 new Thread(){ @Override public void run() { while (true) { try { for (int i = 0; i < 100; i++) { Thread.sleep(1000); currentProgress += 10; if (currentProgress > maxProgress) { break; } mHandler.sendEmptyMessage(0); } } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); } }
启动测试:

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性