`

进度条对话框:通过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; // 声明进度对话框id
	final int INCREASE = 0; // Handler消息类型
	ProgressDialog progressDialog;
	Handler myHandler; // Handler对象引用
	int max = 1000000;

	@Override
	public 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);// 进度每次加1

					if (progressDialog.getProgress() == max) { // 判断是否结束进度
						Toast.makeText(Main.this, "下载完成!", 2000).show();
						progressDialog.dismiss(); // 如果进度条走完则关闭窗口
					} else {
						myHandler.post(runnable);// 将线程添加进消息队列
					}
					break;
				}
				super.handleMessage(msg);
			}
		};
	}

	@Override
	public 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", "执行完毕");
			}

		}

	};

	// 每次弹出对话框时被回调以动态更新对话框内容的方法
	@Override
	public void onPrepareDialog(int id, Dialog dialog) {
		super.onPrepareDialog(id, dialog);
		switch (id) {
		case PROGRESS_DIALOG:
			progressDialog.incrementProgressBy(-progressDialog.getProgress());// 对话框进度清零

			myHandler.post(runnable);// 将线程添加进消息队列

			break;
		}
	}
}
  • 大小: 13.6 KB
分享到:
评论

相关推荐

    Android 自定义ProgressDialog进度条对话框用法详解

    android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西。 首先看看progressDialog里面的方法 setProgressStyle:设置进度条风格,风格为圆形,旋转的。 ...

    Android实现简洁的APP更新dialog数字进度条

    前言:现在一般的Android软件都是需要不断... 1.Handler机制   2.自定义控件+Canvas绘画   3.自定义dialog  部分代码:  public class NumberProgressBar extends View { /** * 右侧未完成进度条的颜色 */

    基于android手机上的软件管理器源代码

    ListView、GridView适配器的复写及ListView和GridView视图的切换,多线程+handler+进度条对话框的使用,自定义Toast的用法,四种动画效果及Layout里面子View的动画效果的使用,具有返回值的Activity的跳转实现..........

    android开发秘籍

    2.3.4 秘诀9:实现选择列表 34 2.3.5 秘诀10:使用隐式intent 创建activity 35 2.3.6 秘诀11:在activity 间传递基本数据类型 37 第3 章 线程、服务、receiver 以及alert 对话框 40 3.1 线程 40 3.1.1 秘诀12:...

    老罗android视频开发源码和ppt经典

    6.20 ProgressBar进度条的使用 6.21 RatingBar评分控件的使用 6.22 ScrollView垂直滚动控件的使用 6.23 HorizontalScrollView水平滚动 6.24 Gallery画廊控件 6.25 Spinner下拉列表控件 6.26 ImageSwitcher图片切换...

    大名鼎鼎SWFUpload- Flash+JS 上传

     SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 [编辑本段]SWFUpload的主要特点  * 可以...

    Android开发应用实战详解源代码

    4.15 progressbar和handler进度条 4.16 动态排版处理 4.17 listactivity布局- 4.17.1 listactivity介绍 4.17.2 使用listactivity 4.18 matrix实现图片缩放 4.19 bitmap和matrix图片旋转 4.20 加载手机存储卡中的文件...

    PT80-NEAT开发指南v1.1

    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................

    Android 开发技巧

    9.39、下载文件的进度条提示 263 9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡...

    Android开发资料合集-World版!

    9.39、下载文件的进度条提示 263 9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡...

    Android开发案例驱动教程 配套代码

    5.7.3 对话框进度条 74 5.7.4 标题栏中进度条 75 5.8 SeekBar 76 5.9 RatingBar 78 本章小结 82 第6章 UI高级控件 83 6.1 列表类控件 83 6.1.1 Adapter概念 83 6.1.2 AutoComplete 84 6.1.3 Spinner 87 ...

    几个经常用到的android开发代码1

    开发中,几乎每个应用都要用到些重复的...本文所包含 退出提示对话框,缓冲条的显示消失,禁止重力感应 横屏 竖屏,还有把毫秒转化成00:00形式 经检验,放到正确的位置,改成相应的Activity名是完全可以达到效果的。

    Ajax完全自学手册(源代码).rar

    Test4Google Ajax进度条 第19章(\C10) ChatSystem Ajax 聊天室 第20章(\C11) WebQQ WebQQ示例 第21章(\C11) Thirf 电视节目预告 Thirf 翻译模块 第22章(\C11) Advertisement 内文广告...

    Ajax完全自学手册PPT和源代码(ptt格式)

    Test4Google Ajax进度条 第19章(\C10) ChatSystem Ajax 聊天室 第20章(\C11) WebQQ WebQQ示例 第21章(\C11) Thirf 电视节目预告 Thirf 翻译模块 第22章(\C11) Advertisement 内文广告系统

    Android开发与应用——张荣,原书配套课件

    4.3.1 进度条 4.3.2 拖动条 4.3.3 评分条 4.3.4 选项卡 4.4 提示框与警告对话框 4.4.1 消息提示框 4.4.2 警告对话框 4.5 小结 练习 第5章 视图界面布局 5.1 界面布局设计 5.1.1 线性布局 ...

    疯狂Android讲义源码

     2.4.4 进度条(ProgressBar)的  功能和用法 85  2.4.5 拖动条(SeekBar)的功能和  用法 90  2.4.6 星级评分条(RatingBar)的  功能和用法 91  2.4.7 选项卡(TabHost)的功能和  用法 93  2.4.8 滚动...

    疯狂Android讲义.part1

    2.4.4 进度条(ProgressBar)的 功能和用法 85 2.4.5 拖动条(SeekBar)的功能和 用法 90 2.4.6 星级评分条(RatingBar) 的 功能和用法 91 2.4.7 选项卡(TabHost)的功能和 用法 93 2.4.8 滚动视图(ScrollView) ...

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

Global site tag (gtag.js) - Google Analytics