Android-ProgressDialog进度对话框

2021-09-24 14:41:57 浏览数 (1)

使用方法:

如果只是普通进度对话框

直接调用ProgressDialog静态方法 show() 即可

创建ProgressDialog

调用方法进行具体设置

setIndeterminate(false);

设置进度条是否显示进度

setMax(MAX_PROGRESS);

设置进度条的最大值

setMessage("...");

设置对话框执行内容

setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)

设置对话框进度条风格

setProgress()

设置 进度条内的进度值(当前)

效果:

代码实现:

主要是两种类型

1.带耗时操作  showIndeterminate

2.不带耗时操作 showProgress

具体实现:

代码语言:javascript复制
public class MainActivity extends Activity {
    final static int MAX_PROGRESS = 100;
    //虚拟 填充长度为100的数组
    private int[] data = new int[50];
    //记录进度对话框完成百分比
    int progressStatus = 0;
    int hasDta = 0;
    ProgressDialog progressDialog01,progressDialog02;
    
    private Button buttonDate;
    private Button buttonTime;
    //创建一个负责更新进度的Handler
    Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            //表明消息是本程序发送的
            if (msg.what == 0x111){
                progressDialog02.setProgress(progressStatus);
            }

        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonDate = (Button) findViewById(R.id.dataBn);
        buttonTime = (Button) findViewById(R.id.timeBn);
        iniClick();//Binding the listeners for you program
    }

    public void showSpinner(View source){
        //用静态方法显示环形进度条
        ProgressDialog.show(this,"任务执行中","热内执行中 请等待...",false,true);
    }

    public void showIndeterminate(View source){
        progressDialog01 = new ProgressDialog(MainActivity.this);
        //设置对话框标题
        progressDialog01.setTitle("任务正在执行中");
        //设置对话框执行内容
        progressDialog01.setMessage("任务正在执行中敬请等待~~~");
        //设置对话框“取消” 按钮关闭
        progressDialog01.setCancelable(true);
        //设置对话框进度条风格
        progressDialog01.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        //设置进度条是否显示进度
        progressDialog01.setIndeterminate(true);
        progressDialog01.show();
    }

    public void showProgress(View source){
        //将进度条完成重设为0
        progressStatus = 0;
        //重新开始填充数组
        hasDta = 0;
        progressDialog02 = new ProgressDialog(MainActivity.this);
        progressDialog02.setMax(MAX_PROGRESS);
        //设置对话框标题
        progressDialog02.setTitle("任务正在执行中");
        //设置对话框执行内容
        progressDialog02.setMessage("任务正在执行中敬请等待~~~");
        //设置对话框“取消” 按钮关闭
        progressDialog02.setCancelable(false);
        //设置对话框进度条风格
        progressDialog02.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        //设置进度条是否显示进度
        progressDialog02.setIndeterminate(false);
        progressDialog02.show();
        new Thread(){//模拟耗时操作
            @Override
            public void run() {
                while (progressStatus < MAX_PROGRESS){
                    //bar1获取完成工作的百分比
                    progressStatus  = (int) (Math.random()*15);
                    try{
                        Thread.sleep(1000);
                    }catch (InterruptedException e){
                        e.printStackTrace();
                    }
                    //更新ProgressBar
                    mHandler.sendEmptyMessage(0x111);
                }
                //任务完成进度条关闭
                progressDialog02.dismiss();
            }
        }.start();
    }

    public void iniClick(){
        //set listener for your Date button
        buttonDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showIndeterminate(MainActivity.this.getWindow().getDecorView());
            }
        });
        //set listener for your Time button
        buttonTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showProgress(MainActivity.this.getWindow().getDecorView());
            }
        });
    }
}

以下是布局文件:

代码语言:javascript复制

0 人点赞