ProgressDialog的用法

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;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值