我在开发项目时经常遇到时间不长但又不短的耗时操作,只有2,3秒的样子,最好是弹出体格等待的对话框,以便用户友好交互,于是,写了一个辅助类,来控制所有等待对话框的显示,基于回调来处理耗时的事件,下面是辅助类的代码:
public class ProgressDialogHelper {
//
private Context mContext;
// 等带对话框的标题
private String mTitle;
// 等待内容
private String mMessage;
// show
private final int SHOW = 1;
// dismiss
private final int DISMISS = 0;
public ProgressDialogHelper(Context mContext) {
this.mContext = mContext;
}
// 控制进度对话框的显示与消失
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case SHOW:
progressDialog = ProgressDialog
.show(mContext, mTitle, mMessage);
break;
case DISMISS:
progressDialog.dismiss();
break;
}
}
};
// 进度对话框
private ProgressDialog progressDialog = null;
/**
* 启用进度对话框
*
* @param title
* 进度框的标题
* @param message
* 进度框显示的内容
* @param callBack
* 回调的执行方法
*/
public void showProgressDialog(String title, String message,
final ProgressCallBack callBack) {
this.mTitle = title;
this.mMessage = message;
handler.sendEmptyMessage(SHOW);// 弹出对话框
new Thread() {
public void run() {
callBack.action();// 执行操作
handler.sendEmptyMessage(DISMISS);// 执行完毕,关闭对话框
}
}.start();
}
// 要在进度对话框显示时执行的操作
public interface ProgressCallBack {
public void action();
}
}
注释,都写的很清晰了,下面来看看如何使用这个辅助工具:
new ProgressDialogHelper(this).showProgressDialog("添加商品",
"正在提交商品信息", new ProgressCallBack() {
public void action() {
try {
// 模拟提交的耗时操作或调用别的方法
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
这个有点长,但是还算便于理解.下面贴两张图来看效果:
写码笔记-欢迎交流
- 大小: 4.6 KB
- 大小: 9.2 KB
分享到:
相关推荐
SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、...
网络请求:基于RxJava+Retrofit+Gson+FDroid的封装,支持对网络请求结果的统一处理、请求结果回调到UI线程、自动判断网络连接状态、自动管理生命周期、模拟后台返回数据、自定义请求头、请求响应日志打印、每个阶段...
我们先进行一个简单的纯SIP信令(不带语音连接建立)的UAC的SIP终端的程序开发的试验(即一个只能作为主叫不能作为被叫的的SIP软电话模型),我们创建一个MFC应用程序,对话框模式,照上面的说明,...
file_dialog_complete_handler : file_dialog_complete_function, 当文件选取对话框关闭后触发的事件处理函数 upload_start_handler : upload_start_function, 开始上传文件前触发的事件处理函数 upload_...
SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、...
昆山工业技术研究院着眼于为委托用户和质检机构搭建良好的沟通桥梁,免去目前市场业务中企业用户需要实地地并频繁地与检测机构沟通,从而提出自己的委托乃至下委托单、等待检测报告等,设计并研发了市场上首款提供...
2.3.4 完成回调函数 2.4 程序编写操作步骤与实验 2.5 小结 第3 章 VC 集成开发环境介绍 3.1 Visual C 开发环境 3.1.1 工作区窗格 3.1.2 输出窗格 3.1.3 编辑区 3.1.4 菜单栏、工具栏、状态栏 3.2 系统菜单...
SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、...
SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、...
waitdialog.zip 等待对话框(22KB)<END><br>66,coolmenu.zip Office 97风格菜单实现(298KB)<END><br>67,dirpk.exe 目录选择对话(78KB)<END><br>68,docktest.zip 演示Docking Window(220kb)<END><br>69,...
回调与名字空间 内省(introspection) namespace命令 转换现有的软件包以使用名字空间 [incrtcl]对象系统 注意事项 第15章 国际化(internationalization) 字符集与编码 消息目录 第16章 事件驱动的编程 ...
在基于Windows 2000网络中,活动目录(Active Directory)是它的核心。活动目录是一个分布式的目录服务。网络信息可以分散在多台不同的计算机上,保证快速访问和容错;同时不管用户从何处访问或信息处在何处,对用户都...
修改高级表格支持库,解决在鼠标按下和抬起之间收到时钟周期事件的情况下,无法收到“被单击”事件的BUG。 3. 修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库...
16.3 事件、信号和回调函数 554 16.4 组装盒构件 556 16.5 gtk+构件 559 16.5.1 gtkwindow 559 16.5.2 gtkentry 560 16.5.3 gtkspinbutton 563 16.5.4 gtkbutton 565 16.5.5 gtktreeview 568 16.6 gnome构件...
16.3 事件、信号和回调函数 554 16.4 组装盒构件 556 16.5 gtk+构件 559 16.5.1 gtkwindow 559 16.5.2 gtkentry 560 16.5.3 gtkspinbutton 563 16.5.4 gtkbutton 565 16.5.5 gtktreeview 568 16.6 gnome构件...
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 RegCloseKey 关闭系统注册表中的一个项(或键) RegConnectRegistry 访问远程系统的部分注册表 RegCreateKey 在指定的项下创建或...