ProgressDialog是AlertDialog的子接口.拥有AlertDialog中的方法。
ProgressDialog代表了进度对话框,程序只要创建了ProgressDialog实例,并将它显示出来就是一个进度对话框。
创建ProgressDialog对话框有两种方式,第一种是调用ProgressDialog的静态方法show();第二种是创建ProgressDialog实例,
调用如:setTitle(String)设置标题;setIndeterminate(boolean indeterminate)设置对话框内的进度条是否显示进度值;
setMessage(CharSequence message)设置对话框里显示的text内容;setProgressStyle(int style)设置对话框内进度条的风格;
以下是实例:
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
final static int MAX_PROGRESS=100;//该程序模拟填充长度为100的数组
Button button;
private int[] data = new int[50];
int progressStatus = 0;//记录对话框完成百分比
int hasData = 0;
ProgressDialog pd1,pd2;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
//表明该消息是该程序发送的
if(msg.what == 0x123){
pd2.setProgress(progressStatus);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button_wifi);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
shwoProgress(v);
}
});
}
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 shwoProgress(View source){
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.show();
new Thread(){
public void run(){
while(progressStatus < MAX_PROGRESS){
//获取耗时完成的百分比
progressStatus = MAX_PROGRESS * doWork()/data.length;
//发送空消息到Handle
handler.sendEmptyMessage(0x123);
}
//如果任务已经完成
if(progressStatus >= MAX_PROGRESS)
pd2.dismiss();
}
}.start();
}
//模拟一个耗时的操作
public int doWork(){
//为数组元素赋值
data[hasData++] = (int) (Math.random() * 100);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return hasData;
}
}