对话框详解1

简介: 本文演示了两种特殊对话框--ProcessDialog的使用方法:主程序如下:public class Main extends Activity implements OnClickListener { private static final int MAX_PROGRESS ...

本文演示了两种特殊对话框--ProcessDialog的使用方法:




主程序如下:

public class Main extends Activity implements OnClickListener {
	private static final int MAX_PROGRESS = 100;
	private ProgressDialog progressDialog;
	private Handler progressHandler;
	private int progress;

	// 显示进度对话框,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() {
			public void onClick(DialogInterface dialog, int whichButton) {
				// 通过删除消息代码的方式停止定时器
				progressHandler.removeMessages(1);
			}
		});
		// 设置进度对话框的【取消】按钮
		progressDialog.setButton2("取消", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int whichButton) {
				// 通过删除消息代码的方式停止定时器的执行
				progressHandler.removeMessages(1);
				// 恢复进度初始值
				progress = 0;
				progressDialog.setProgress(0);
			}
		});
		progressDialog.show();
		progressHandler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				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);
	}

	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.button1:
			// 显示进度条风格的进度对话框
			showProgressDialog(ProgressDialog.STYLE_HORIZONTAL);
			break;

		case R.id.button2:
			// 显示旋转指针风格的进度对话框
			showProgressDialog(ProgressDialog.STYLE_SPINNER);
			break;
		}
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button button1 = (Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		Button button2 = (Button) findViewById(R.id.button2);
		button2.setOnClickListener(this);

	}
}


目录
相关文章
|
Web App开发 编解码 Ubuntu
YouTube下载视频教程:常用的网站软件插件APP都有涉及
有时候可能需要YouTube上的视频来进行一些操作,比如教程演示,语言学习,视频编辑等.....那么YouTube视频怎么下载下来呢?方法比较多。在这篇文章里我会给大家介绍一些下载YouTube视频的常用网站、浏览器插件、电脑软件和手机APP,方便大家找到最合适的方法去保存油管视频。
2958 1
YouTube下载视频教程:常用的网站软件插件APP都有涉及
|
存储 算法 NoSQL
6 种常见分布式唯一ID生成策略及它们的优缺点对比
全局唯一的 ID 几乎是所有系统都会遇到的刚需。这个 id 在搜索, 存储数据, 加快检索速度 等等很多方面都有着重要的意义
6 种常见分布式唯一ID生成策略及它们的优缺点对比
|
SQL 存储 关系型数据库
nacos安装教程
nacos安装教程
934 0
nacos安装教程
|
SQL Oracle 关系型数据库
Oracle 使用 PL/SQL Developer 生成 AWR 报告
Oracle AWR报告是用来分析数据库故障和性能的重要指标报告!
Oracle 使用 PL/SQL Developer 生成 AWR 报告
|
存储 开发框架 弹性计算
阿里云服务器操作系统有哪些?如何选择和更换操作系统?
阿里云服务器操作系统有哪些?如何选择和更换操作系统?应该如何选择适合自己的服务器呢?
2416 0
阿里云服务器操作系统有哪些?如何选择和更换操作系统?
video标签自动播放视频和移动端封面空白问题解决
video标签自动播放视频和移动端封面空白问题解决
1367 0
video标签自动播放视频和移动端封面空白问题解决
|
前端开发 Java API
【微服务】 微服务学习笔记三:利用Feign替换RestTemplate完成远程调用
【微服务】 微服务学习笔记三:利用Feign替换RestTemplate完成远程调用
469 0
【微服务】 微服务学习笔记三:利用Feign替换RestTemplate完成远程调用
|
JavaScript
Vue项目,安装less,less-loader,报错【TypeError: this.getOptions is not a function】解决办法
Vue项目,安装less,less-loader,报错【TypeError: this.getOptions is not a function】解决办法
1017 0
Vue项目,安装less,less-loader,报错【TypeError: this.getOptions is not a function】解决办法
|
关系型数据库 MySQL Java
Flink Mysql CDC结合Doris flink connector实现数据实时入库
Flink Mysql CDC结合Doris flink connector实现数据实时入库,Apache doris通过扩展支持通过 Flink 读写 doris 数仓中的数据表。
845 0
Flink Mysql CDC结合Doris flink connector实现数据实时入库
|
消息中间件 运维 Java
在SpringBoot中实现异步事件驱动
在项目实际开发过程中,我们有很多这样的业务场景:一个事务中处理完一个业务逻辑后需要跟着处理另外一个业务逻辑,伪码大致如下:
1189 0
在SpringBoot中实现异步事件驱动