package com.dh.foundation.utils; import android.app.Activity; import android.app.Dialog; import android.content.Context; /** * 等待进度条展示工具类 * Created By: Seal.Wu * Date: 2014/11/18 * Time: 22:17 */ public class ProgressDialogUtil { private static Dialog progressDialog; private static int level;//等待框展示层级,只有level=0的时候才能关闭progressDialog private static DefaultProgressDialogMaker defaultProgressDialogMaker = new DefaultProgressDialogMaker();//对话框制造者 private static ProgressDialogMaker dialogMaker; public static ProgressDialogMaker getDialogMaker() { return dialogMaker; } /** * 设置对话框构建类 * * @param dialogMaker 对话框构建者 */ public static void setDialogMaker(ProgressDialogMaker dialogMaker) { ProgressDialogUtil.dialogMaker = dialogMaker; } /** * 设置等待对话框提醒内容 */ public static void setTipContent(String content) { defaultProgressDialogMaker.setContent(content); } /** * 设置自定义的对话框视图 */ public static void setCustomView(int customViewLayout) { defaultProgressDialogMaker.setCustomViewLayout(customViewLayout); } /** * 设置对话框样式 */ public static void setDialogStyle(int dialogStyle) { defaultProgressDialogMaker.setStyle(dialogStyle); } public static synchronized void showProgressDialog(Context context) { showProgressDialog(context, null); } public static synchronized void showProgressDialog(Context context, String content) { showProgressDialog(context, content, false); } public static synchronized void showProgressDialog(Context context, String content,boolean cancelAble) { if (context instanceof Activity) { if (progressDialog == null || !context.equals(progressDialog.getOwnerActivity()) || !progressDialog.isShowing()) { dismissProgressDialog(); if (StringUtils.isEmpty(content)) { content = "请稍候..."; } if (dialogMaker != null) { progressDialog = dialogMaker.makeDialog(context); } else { defaultProgressDialogMaker.setContent(content); progressDialog = defaultProgressDialogMaker.makeDialog(context); } progressDialog.setOwnerActivity((Activity) context); if (!cancelAble) { progressDialog.setCanceledOnTouchOutside(false); progressDialog.setCancelable(false); } progressDialog.show(); } level++; } } /** * 消除对话框,不用担心多个对话框同时出现,只有当showProgressDialog的次数和dismissProgressDialog调用次数相同时,ProgressDialog才会消除 */ public static synchronized void dismissProgressDialog() { level--; if (level < 0) { level = 0; } if (progressDialog != null && level == 0 && progressDialog.isShowing() && !progressDialog.getOwnerActivity().isFinishing()) { try { progressDialog.dismiss(); } catch (Exception e) { DLoggerUtils.e(e); } finally { progressDialog = null; } } } /** * 一般情况下不要调用此方法,此方法为一次性全部消除所有对话框层级.推荐调用dismissProgressDialog按层级进行消除等待框 */ public static void dismissAll() { if (progressDialog != null && progressDialog.isShowing() && !progressDialog.getOwnerActivity().isFinishing()) { try { progressDialog.dismiss(); } catch (Exception e) { DLoggerUtils.e(e); } } /** * 复位 */ level = 0; progressDialog = null; } }