您的位置:首页 > 移动开发 > Android开发

【android】 ProgressDialog的使用

2011-03-20 11:08 369 查看
package com.shao.android;

import java.util.Random;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.DialogInterface;

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 Main extends Activity implements OnClickListener{

/** Called when the activity is first created. */

private static final int MAX_Progress=100;

private ProgressDialog progressDialog;

private Handler progressHandler;

private int progress;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button button1=(Button)findViewById(R.id.btn1);

Button button2=(Button)findViewById(R.id.btn2);

button1.setOnClickListener(this);

button2.setOnClickListener(this);

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch(v.getId())

{

case R.id.btn1:

showProgressDialog(ProgressDialog.STYLE_HORIZONTAL);

break;

case R.id.btn2:

showProgressDialog(ProgressDialog.STYLE_SPINNER);

break;

}

}

// 显示进度对话框,style表示进度对话框的风格

private void showProgressDialog(int style)

{

progressDialog=new ProgressDialog(this);

progressDialog.setIcon(R.drawable.wait);

progressDialog.setTitle("正在处理数据...");

progressDialog.setMessage("请稍后...");

// 设置进度对话框的风格

progressDialog.setProgressStyle(style);

// 设置进度对话框的进度最大值

progressDialog.setMax(MAX_Progress);

// 设置进度对话框的【暂停】按钮

progressDialog.setButton("暂停", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int whichButton) {

// TODO Auto-generated method stub

// 通过删除消息代码的方式停止定时器的执行

progressHandler.removeMessages(1);

// 恢复进度初始值

progress=0;

progressDialog.setProgress(0);

}

});

progressDialog.show();

progressHandler=new Handler(){

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

// if (progressDialog.getProgress() >= MAX_PROGRESS)

if(progress>=MAX_Progress)

{

// 进度达到最大值,关闭对话框

progress=0;

progressDialog.dismiss();

}

else {

progress++;

// 将进度递增1

progressDialog.incrementProgressBy(1);

// 随机设置下一次递增进度(调用handleMessage方法)的时间

progressHandler.sendEmptyMessageDelayed(1,50+ new Random().nextInt(500));

}

}

};

// 设置进度初始值

progress=(progress>0)?progress:0;

progressDialog.setProgress(progress);

progressHandler.sendEmptyMessage(1);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: