首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

进度条对话框:透过Handler实现

2012-06-28 
进度条对话框:通过Handler实现????package com.lilin.progressdialog//声明包语句import android.app.Act

进度条对话框:通过Handler实现


进度条对话框:透过Handler实现

?

?

?

?

package com.lilin.progressdialog;//声明包语句import android.app.Activity;import android.app.Dialog;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class Main extends Activity {final int PROGRESS_DIALOG = 0; // 声明进度对话框idfinal int INCREASE = 0; // Handler消息类型ProgressDialog progressDialog;Handler myHandler; // Handler对象引用int max = 1000000;@Overridepublic void onCreate(Bundle savedInstanceState) { // 重写onCreate方法super.onCreate(savedInstanceState);setTitle("进度条对话框");setContentView(R.layout.main);Button bok = (Button) this.findViewById(R.id.Button01);bok.setOnClickListener(new OnClickListener() {public void onClick(View v) {showDialog(PROGRESS_DIALOG); // 显示进度对话框}});myHandler = new Handler() { // 创建Handler对象public void handleMessage(Message msg) {// 处理传过的信息switch (msg.what) {case INCREASE:progressDialog.incrementProgressBy(msg.arg1);// 进度每次加1if (progressDialog.getProgress() == max) { // 判断是否结束进度Toast.makeText(Main.this, "下载完成!", 2000).show();progressDialog.dismiss(); // 如果进度条走完则关闭窗口} else {myHandler.post(runnable);// 将线程添加进消息队列}break;}super.handleMessage(msg);}};}@Overridepublic Dialog onCreateDialog(int id) {// 重写onCreateDialog方法switch (id) { // 对id进行判断case PROGRESS_DIALOG: // 创建进度对话框progressDialog = new ProgressDialog(this);// 创建进度对话框progressDialog.setMax(max);// 设置最大值progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setTitle("正在同步......");// 设置标题progressDialog.setCancelable(false);// 设置进度对话框不能用回退按钮关闭break;}return progressDialog;}Runnable runnable = new Runnable() {int i = 0;public void run() {i = i + 10;Message message = myHandler.obtainMessage();message.what = INCREASE;message.arg1 = i;// Bundle bundle = new Bundle();// bundle.putString("key", "value");// message.setData(bundle);myHandler.sendMessage(message); // 发送Handler消息if (i == max) {myHandler.removeCallbacks(runnable);Log.i("andli", "执行完毕");}}};// 每次弹出对话框时被回调以动态更新对话框内容的方法@Overridepublic void onPrepareDialog(int id, Dialog dialog) {super.onPrepareDialog(id, dialog);switch (id) {case PROGRESS_DIALOG:progressDialog.incrementProgressBy(-progressDialog.getProgress());// 对话框进度清零myHandler.post(runnable);// 将线程添加进消息队列break;}}}

热点排行