> 文章列表 > Android开发-Android常用组件-ProgressBar进度条

Android开发-Android常用组件-ProgressBar进度条

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

大号的圆形进度条(模糊模式),该样式适用于亮色背景(例如白色)

progress_bar.xml:
<?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小、中、大--><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"style="@android:style/Widget.ProgressBar.Small"/><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"/><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"style="@android:style/Widget.ProgressBar.Large"/>
<!--    系统提供的水平进度条,分为模糊和不模糊--><ProgressBarandroid: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"/><ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:indeterminate="true"  //不精确显示进度style="@android:style/Widget.ProgressBar.Horizontal"/>
</LinearLayout>

 Android开发-Android常用组件-ProgressBar进度条

  •  模拟进度条更新:
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(){@Overridepublic void handleMessage(@NonNull Message msg){super.handleMessage(msg);switch (msg.what){case 0:progressBar.setProgress(currentProgress);break;}}};@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.progress_bar);progressBar = findViewById(R.id.pb);maxProgress = progressBar.getMax();}@Overrideprotected void onStart(){super.onStart();//启动线程模拟加载new Thread(){@Overridepublic 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();}
}

Android开发-Android常用组件-ProgressBar进度条

 启动测试:

Android开发-Android常用组件-ProgressBar进度条Android开发-Android常用组件-ProgressBar进度条

Android开发-Android常用组件-ProgressBar进度条