progressdialog进度框_使用ProgressDialog创建进度对话框

本文介绍了如何在Android中使用ProgressDialog创建进度对话框。通过ProgressDialog的show()方法和对象属性设置,可以创建简单或定制化的进度条。文章详细讲解了三种创建进度对话框的方法,并提供了后台Activity代码示例,包括模拟耗时任务更新进度条的实现。

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

ProgressDialog代表了进度对话框,程序只要创建ProgressDialog实例,并将它显示出来就是一个进度对画框。使用ProgressDialog创建进度对话框有如下两种方式。

①如果只是创建简单的对话框,调用ProgressDialog提供的静态show()方法显示对话框即可。

②创建ProgressDialog,然后调用方法对对话框里的进度条进行设置,设置完成后将对话框显示出来即可。

为了对进度对话框里的进度进行设置,ProgressDialog包含了如下常用的方法。

setIndeterminate(boolean indeterminate):设置对话框里的进度条不显示进度值。

setMax(int max):设置对话框里的进度条的最大值。

setMessage(CharSequence message):设置对话框里显示的消息。

setProgress(int value):设置对话框里进度条的进度值。

setProgressStyle(int style):设置对话框里进度条的风格。

下面程序的界面也很简单,界面上只有三个简单的按钮,当用户单击不同按钮时系统将会启动不同的进度对话框。其中第三个按钮激发的进度对话框比较复杂,该对话框使用填充数组来模拟耗时任务,随着任务的进行不断更新进度对话框上进度的显示。

>

/>

后台Activity代码文件如下:

packageorg.crazyit.helloworld;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.app.Activity;importandroid.app.ProgressDialog;importandroid.view.Menu;importandroid.view.View;public class ProgressDialogTest extendsActivity {final static int MAX_PROGRESS=100;//改程序模拟填充长度为100的数组

private int[] data=new int[100];//记录进度对话框的完成百分比

int progressStatus=0;int hasData=0;

ProgressDialog pd1,pd2;//定义一个负责更新的进度的Handler

Handler handler=newHandler()

{public voidhandleMessage(Message msg)

{//表明消息是由该程序发送的

if(msg.what==0x123)

{

pd2.setProgress(progressStatus);

}

}

};

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.progress_dialog_test);

}public voidshowSpinner(View source)

{

ProgressDialog.show(this, "任务执行中", "任务执行中,请等待",false,true); //① }public voidshowIndeterminate(View source)

{

pd1=new ProgressDialog(ProgressDialogTest.this);//设置对话框的标题

pd1.setTitle("任务正在执行中");//设置对话框显示的内容

pd1.setMessage("任务正在执行中,敬请等待...");//设置对话框能用“取消”按钮关闭

pd1.setCancelable(true);//设置对话框的进度条风格

pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置对话框的进度条是否显示进度

pd1.setIndeterminate(true);

pd1.show(); //② }public voidshowpProgress(View source)

{//将进度条的完成进度设为0

progressStatus=0;//重新开始填充数组

hasData=0;

pd2=new ProgressDialog(ProgressDialogTest.this);

pd2.setMax(MAX_PROGRESS);//设置对画框的标题

pd2.setTitle("任务完成百分比");//设置对话框显示的内容

pd2.setMessage("耗时任务的完成百分比");//设置不能用“取消”按钮关闭

pd2.setCancelable(false);//设置对话框的进度条风格

pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置对话框的进度条是否显示进度

pd2.setIndeterminate(false);

pd2.show(); //③newThread(){public voidrun()

{while(progressStatus

{//获取耗时操作的完成百分比

progressStatus=MAX_PROGRESS*doWork()/data.length;//发送空消息到Handler

handler.sendEmptyMessage(0x123);

}//如果任务已完成

if(progressStatus>=MAX_PROGRESS)

{//关闭对话框

pd2.dismiss();

}

}

}.start();

}//模拟一个耗时的操作

public intdoWork()

{//为数组元素赋值

data[hasData++]=(int)(Math.random()*100);try{

Thread.sleep(100);

}catch(InterruptedException e)

{

e.printStackTrace();

}returnhasData;

}

@Overridepublic booleanonCreateOptionsMenu(Menu menu) {//Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.progress_dialog_test, menu);return true;

}

}

上面程序为三个按钮定义了事件处理方法,其中一个按钮的事件处理方法调用了ProgressDialog的静态show()方法创建并显示对话框,如上面①号粗体字代码所示,这也是使用对话框的最简单的方式;第二个按钮的事件处理方法先创建了ProgressDialog对象,再调用该对话框的show()方法将它显示出来,如上面的②号粗体字代码所示;第三个按钮的事件处理方法也先创建ProgressDialog对象,并设置对话框的相关属性,再调用show()方法将它显示出来。

运行上面的程序出现如下所示界面效果:

d88fce011b085ffe44b7bfde45e93a01.png

5334f5d1f8484d5a5bb12871d1b2a0e1.png

032ea9a05265b66230c9c4f1223f8847.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值