我在开发项目时经常遇到时间不长但又不短的耗时操作,只有2,3秒的样子,最好是弹出体格等待的对话框,以便用户友好交互,于是,写了一个辅助类,来控制所有等待对话框的显示,基于回调来处理耗时的事件,下面是辅助类的代码:
注释,都写的很清晰了,下面来看看如何使用这个辅助工具:
这个有点长,但是还算便于理解.下面贴两张图来看效果:
[img]http://dl.iteye.com/upload/attachment/0067/5887/fec43d39-6386-3987-91f8-bc3a1c980048.png[/img]
[img]http://dl.iteye.com/upload/attachment/0067/5889/6655c2fa-51a5-3863-a4d4-28608d3bb408.png[/img]
写码笔记-欢迎交流
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();
}
}
});
这个有点长,但是还算便于理解.下面贴两张图来看效果:
[img]http://dl.iteye.com/upload/attachment/0067/5887/fec43d39-6386-3987-91f8-bc3a1c980048.png[/img]
[img]http://dl.iteye.com/upload/attachment/0067/5889/6655c2fa-51a5-3863-a4d4-28608d3bb408.png[/img]
写码笔记-欢迎交流