一、ProgressDialog
ProgressDialog代表了进度条对话框,程序只要创建ProgressDialog实例,并将它显示出来就是一个进度条对话框,和它相似的控件有:CharacherPickerDialog、AlertDialog、DatePickerDialog、TimePickerDialog。它的用法有两种:1、直接调用show()方法来显示简单对话框;2、创建ProgressDialog,然后调用方法对对话框里面的进度条进行设置,然后显示出来即可。
常用的方法如下:
- setProgressStyle:设置进度条风格。
- setTitlt:设置标题。
- setMessage:设置提示信息
- setIcon:设置标题图标
- setIndeterminate:设置ProgressDialog 的进度条是否不明确;这个属性对于ProgressDailog默认的转轮模式没有实际意义,默认下设置为true,它仅仅对带有ProgressBar的Dialog有作用。修改这个属性为false后可以实时更新进度条的进度。
- setCancelable:设置ProgressDialog 是否可以按返回键取消。
- CancelListner:当前Dialog强制取消之后将会被执行,通常用来清理未完成的任务。
- setButton:设置ProgressDialog 的一个Button(需要监听Button事件);
- show:显示ProgressDialog。
- cancel:删除progressdialog。
- dismiss:删除progressdialog作用和cancel相同。
- setProgress(intCounter):更新进度条,当然一般都需要Handler的结合来更新进度条。
接下来通过一个例子看一下效果:
- Activity界面中代码MainActivity .java
public class MainActivity extends Activity{
final static int MAX_PROGRESS = 100;
// 该程序模拟填充长度为100的数组
private int[] data = new int[50];
// 记录进度对话框的完成百分比
int progressStatus = 0;
int hasData = 0;
ProgressDialog pd1,pd2;
// 定义一个负责更新的进度的Handler
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
// 表明消息是由该程序发送的
if (msg.what == 0x123){
pd2.setProgress(progressStatus);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void showSpinner(View source){
// 调用静态方法显示环形进度条
ProgressDialog.show(this, "任务执行中"
, "任务执行中,请等待", false, true); // ①
}
public void showIndeterminate(View source){
pd1 = new ProgressDialog(MainActivity.this);
// 设置对话框的标题
pd1.setTitle("任务正在执行中");
// 设置对话框显示的内容
pd1.setMessage("任务正在执行中,敬请等待...");
// 设置对话框能用“取消”按钮关闭
pd1.setCancelable(true);
// 设置对话框的进度条风格
pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 设置对话框的进度条是否显示进度
pd1.setIndeterminate(true);
pd1.show(); // ②
}
public void showProgress(View source){
// 将进度条的完成进度重设为0
progressStatus = 0;
// 重新开始填充数组
hasData = 0;
pd2 = new ProgressDialog(MainActivity.this);
pd2.setMax(MAX_PROGRESS);
// 设置对话框的标题
pd2.setTitle("任务完成百分比");
// 设置对话框显示的内容
pd2.setMessage("耗时任务的完成百分比");
// 设置对话框不能用“取消”按钮关闭
pd2.setCancelable(false);
// 设置对话框的进度条风格
pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 设置对话框的进度条是否显示进度
pd2.setIndeterminate(false);
pd2.show(); // ③
new Thread(){
public void run(){
while (progressStatus < MAX_PROGRESS){
// 获取耗时操作的完成百分比
progressStatus = MAX_PROGRESS
* doWork() / data.length;
// 发送空消息到Handler
handler.sendEmptyMessage(0x123);
}