ProgressDialog的用法

来源:互联网 发布:sodu源码 编辑:程序博客网 时间:2024/04/29 16:51

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(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stub//表明该消息是该程序发送的if(msg.what == 0x123){pd2.setProgress(progressStatus);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button)findViewById(R.id.button_wifi);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubshwoProgress(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;//发送空消息到Handlehandler.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 blocke.printStackTrace();}return hasData;}}

0 0
原创粉丝点击