Android开发入门组件(十三)——ProgressBar

本文详细介绍了Android中进度条的使用方法,包括基本样式设置、进度控制、自定义进度条及弹出框应用。通过实例展示了如何创建不同类型的进度条,并控制其进度,还介绍了自定义进度条样式和实现进度条弹出框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天来讲一下进度条(其实包含了刷新圈),主要讲基本常用的一些方法,先看一下图片就知道大概要讲的是什么了

1.基本的使用方法

默认的进度条是一个旋转的刷新圈,即没有参数的情况下

 <ProgressBar
        android:id="@+id/pb2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        style="@android:style/Widget.ProgressBar"/>

    <ProgressBar
        android:id="@+id/pb3"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_marginTop="10dp"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        />

如上的代码写出来是两个转动的圆弧,效果如下:

 但是要写一个进度条要怎么写呢

<ProgressBar
        android:id="@+id/pb3"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_marginTop="10dp"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        />//进行进度条的风格的设置

    <ProgressBar
        android:id="@+id/pb4"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_marginTop="10dp"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:max="100"   //进度条的最大长度
        android:progress="10"  //进度条的选择长度
        android:secondaryProgress="30"//进度条的第二选择长度/>

需要设置style来换成进度条的风格来进行操作。效果如下:

2.进度条的控制函数

举例设置一个button来操作进度条,来进行进度条的进度显示。

 pb3.setProgress(30);//设置进度条的进度

//设置按钮的点击事件,进行点击完成对相应进度条的进度设置
bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                handler.sendEmptyMessage(0);//设置操作处理
            }
        });

Handler handler=new Handler(){
        public void handleMessage(Message msg){
            super.handleMessage((msg));
            if (pb3.getProgress()<100){//判断是否小于最大值
               handler.postDelayed(runnable,500);//延迟500ms进行调用函数
            }else {
                ToastUtil.showMessage(ProgressActivity.this,"加载完成");
//进度条加载完成的函数
            }
        }
    };

    Runnable runnable=new Runnable() {
        @Override
        public void run() {
            pb3.setProgress(pb3.getProgress()+5);//每次设置进度条+5
            handler.sendEmptyMessage(0);
        }
    };

效果如下:当点击按钮的时候会进行进度条的补充,知道补充完整个进度条然后弹出一个提示“加载完成 ”

3.自定义进度条

自定义的布局文件bg_progress

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"

    android:drawable="@drawable/progress"//使用自定义的图片
    android:pivotX="50%"//旋转中心的X坐标
    android:pivotY="50%"//旋转中心的Y坐标
>
</animated-rotate>

对应的progress组件代码

<ProgressBar
        android:id="@+id/pb5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:indeterminateDrawable="@drawable/bg_progress"//在这里引用自定义的布局文件
        style="@android:style/Widget.ProgressBar"/>

使用的是自己一个自定义的图片来进行旋转,效果如下图:

4.进度条弹出框ProgressBar

在一般使用中还会用到弹出一个刷新圈的提示框,或者进度条来显示任务的完成情况。

用法类似于Dialog

主要定义在 activity文件中,代码如下,

(1)先做刷新圈的转动显示提示组件

bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ProgressDialog progressDialog=new ProgressDialog(ProgressActivity.this);
                progressDialog.setTitle("提示:"); //提示框的标题
                progressDialog.setMessage("正在加载...");//提示框的内容信息
                progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialogInterface) {
                        ToastUtil.showMessage(ProgressActivity.this,"cancel...");
                    }
                });
                progressDialog.setCancelable(false);//是否可以点击取消
                progressDialog.show();
            }
        });

效果如下:

(2)进度条的弹出显示

bt3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ProgressDialog progressDialog=new ProgressDialog(ProgressActivity.this);
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.setTitle("提示:");
                progressDialog.setMessage("正在下载...");
                progressDialog.setProgress(50);
                progressDialog.setMax(100);
                progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "下载完成", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        ToastUtil.showMessage(ProgressActivity.this,"下载完成了");
                    }
                });
                progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialogInterface) {
                        ToastUtil.showMessage(ProgressActivity.this,"cancel...");
                    }
                });
                progressDialog.setCancelable(false);
                progressDialog.show();
            }
        });

效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值