对话框工具类

package com.skyruler.android.signaltrack.utils;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.skyruler.android.signaltrack.app.R;

/**
 * 对话框工具
 */
public class AlertDialogUtils {
    private static AlertDialogUtils instance;

    public static AlertDialogUtils getInstance() {
        if (instance == null) {
            synchronized (AlertDialogUtils.class) {
                if (instance == null) {
                    instance = new AlertDialogUtils();
                }
            }
        }

        return instance;
    }

    public AlertDialog showMapSelectDialog(Context ctx) {
        return buildDialog(ctx);
    }

    public interface DialogListener {
        void closeDialog(AlertDialog dialog);
    }

    /**
     * 重启app
     *
     * @param context
     * @param msg
     */
    public void showMessageForRestart(final Activity context, String msg) {
        final AlertDialog alertDialog = buildDialog(context);
        Window window = alertDialog.getWindow();
        window.setContentView(R.layout.dialog_message);
        TextView textView = (TextView) window.findViewById(R.id.tv_title);
        textView.setText(context.getString(R.string.AlertDialog_prompt));
        textView = (TextView) window.findViewById(R.id.tv_message);
        textView.setText(msg);

        Button exit_btn = (Button) window.findViewById(R.id.btn_ok);
        exit_btn.setText(context.getString(R.string.SummaryActivity_String30));

        exit_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
                context.finish();
                RestartAppUtils.restartApp(context);
            }
        });
    }

    public void showConfirmMessage(Context context, String title, String message) {
        final AlertDialog buildDialog = buildDialog(context);
        Window window = buildDialog.getWindow();
        if (window != null) {
            window.setContentView(R.layout.dialog_confirm);
            TextView tvTitle = (TextView) window.findViewById(R.id.tv_title);
            if (!TextUtils.isEmpty(title)) {
                tvTitle.setText(title);
            }
            TextView tvMessage = (TextView) window.findViewById(R.id.tv_message);
            tvMessage.setText(message);
            Button btnOk = (Button) window.findViewById(R.id.btn_ok);
            Button btnCancel = (Button) window.findViewById(R.id.btn_cancel);
            btnCancel.setVisibility(View.GONE);
            btnOk.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    buildDialog.dismiss();
                }
            });
        }
    }

    public void showConfirmMessage(Context context, String title, String okBtn, String clearBtn, String message, final View.OnClickListener onOkClickListener, final View.OnClickListener onCancelClickListener) {
        final AlertDialog buildDialog = buildDialog(context);
        Window window = buildDialog.getWindow();
        window.setContentView(R.layout.dialog_confirm);
        TextView tvTitle = (TextView) window.findViewById(R.id.tv_title);
        if (!TextUtils.isEmpty(title)) {
            tvTitle.setText(title);
        }
        TextView tvMessage = (TextView) window.findViewById(R.id.tv_message);
        tvMessage.setText(message);
        Button btnOk = (Button) window.findViewById(R.id.btn_ok);
        Button btnCancel = (Button) window.findViewById(R.id.btn_cancel);
        if (!TextUtils.isEmpty(okBtn)) {
            btnOk.setText(okBtn);
        }
        if (!TextUtils.isEmpty(clearBtn)) {
            btnCancel.setText(clearBtn);
        }
        btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onOkClickListener != null) {
                    onOkClickListener.onClick(v);
                }
                buildDialog.dismiss();
            }
        });
        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onCancelClickListener != null) {
                    onCancelClickListener.onClick(v);
                }
                buildDialog.dismiss();// 关闭弹出框
            }
        });
    }

    public void showConfirmMessage1(Context context, String okBtn, String clearBtn, String message, String message1, final View.OnClickListener onOkClickListener) {
        final AlertDialog alertDialog = buildDialog(context);
        Window window = alertDialog.getWindow();
        window.setContentView(R.layout.dialog_confirm);
        TextView tvTitle = (TextView) window.findViewById(R.id.tv_title);

        TextView tvMessage = (TextView) window.findViewById(R.id.tv_message);
        TextView tvMessage1 = (TextView) window.findViewById(R.id.tv_message1);
        if (!TextUtils.isEmpty(message1)) {
            tvMessage1.setVisibility(View.VISIBLE);
        }
        tvMessage.setText(message);
        tvMessage1.setText(message1);
        Button btnOk = (Button) window.findViewById(R.id.btn_ok);
        Button btnCancel = (Button) window.findViewById(R.id.btn_cancel);
        if (!TextUtils.isEmpty(okBtn)) {
            btnOk.setText(okBtn);
        }
        if (!TextUtils.isEmpty(clearBtn)) {
            btnCancel.setText(clearBtn);
        }
        btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onOkClickListener != null) {
                    onOkClickListener.onClick(v);
                }
                alertDialog.dismiss();
            }
        });
        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();// 关闭弹出框
            }
        });
    }

    public void showConfirmMessage(Context context, String title, String message, final View.OnClickListener onOkClickListener) {
        showConfirmMessage(context, title, "", "", message, onOkClickListener, null);
    }

    /**
     * 显示信息
     *
     * @param context
     * @param msg
     */
    public void showMessage(Context context, String msg) {
        final AlertDialog alertDialog = buildDialog(context);
        Window window = alertDialog.getWindow();
        window.setContentView(R.layout.dialog_message);
        TextView textView = (TextView) window.findViewById(R.id.tv_title);
        textView.setText(context.getString(R.string.AlertDialog_prompt));
        textView = (TextView) window.findViewById(R.id.tv_message);
        textView.setText(msg);

        Button exit_btn = (Button) window.findViewById(R.id.btn_ok);
        exit_btn.setText(context.getString(R.string.SummaryActivity_String30));

        exit_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
    }

    /**
     * 显示一个编辑对话框
     *
     * @param context               上下文
     * @param title                 标题
     * @param msg                   消息
     * @param editType              edit控制类型
     * @param textButtonOk          确认按键text
     * @param textButtonCancel      取消按键text
     * @param onOkClickListener     ok按键监听
     * @param onCancelClickListener cancel按键监听
     */
    public void showEditDialog(Context context, String title, String msg, int editType,
                               String textButtonOk, String textButtonCancel,
                               final OnClickListener onOkClickListener,
                               final View.OnClickListener onCancelClickListener) {
        final AlertDialog alertDialog = buildDialog(context);
        Window window = alertDialog.getWindow();
        if (window != null) {
            window.setContentView(R.layout.dialog_edit);
            TextView tvTitle = (TextView) window.findViewById(R.id.tv_title);
            TextView tvMsg = (TextView) window.findViewById(R.id.tv_msg);
            final EditText edInput = (EditText) window.findViewById(R.id.editTextInput);
            Button btnOk = (Button) window.findViewById(R.id.btn_ok);
            Button btnCancel = (Button) window.findViewById(R.id.btn_cancel);
            tvTitle.setText(title);
            tvMsg.setText(msg);
            edInput.setInputType(editType);
            if (!TextUtils.isEmpty(textButtonOk)) {
                btnOk.setText(textButtonOk);
            }
            if (!TextUtils.isEmpty(textButtonCancel)) {
                btnCancel.setText(textButtonCancel);
            }

            btnOk.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean result = true;
                    if (onOkClickListener != null) {
                        result = onOkClickListener.onClick(v, edInput.getText().toString().trim());
                    }
                    if (result) {
                        alertDialog.dismiss();
                    }
                }
            });
            btnCancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (onCancelClickListener != null) {
                        onCancelClickListener.onClick(v);
                    }
                    alertDialog.dismiss();// 关闭弹出框
                }
            });
        }
    }

    /**
     * 显示一个编辑对话框
     *
     * @param context           上下文
     * @param title             标题
     * @param msg               消息
     * @param editType          edit控制类型
     * @param onOkClickListener ok按键监听
     */
    public void showEditDialog(Context context, String title, String msg, int editType,
                               final OnClickListener onOkClickListener) {
        showEditDialog(context, title, msg, editType, "", "", onOkClickListener, null);
    }

    /**
     * 显示错误信息
     *
     * @param context
     * @param msg
     */

    public void showError(Context context, String msg) {
        final AlertDialog alertDialog = buildDialog(context);
        Window window = alertDialog.getWindow();
        window.setContentView(R.layout.dialog_message);
        TextView textView = (TextView) window.findViewById(R.id.tv_title);
        textView.setText(context.getString(R.string.AlertDialog_prompt));
        textView.setBackgroundResource(R.drawable.dialog_title_bg_error);
        textView = (TextView) window.findViewById(R.id.tv_message);
        textView.setText(msg);

        Button exit_btn = (Button) window.findViewById(R.id.btn_ok);
        exit_btn.setText(context.getString(R.string.SummaryActivity_String30));

        exit_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
    }

    /**
     * 显示普通的toast
     *
     * @param context
     * @param msg
     */
    public void showToast(Context context, String msg) {
        Toasty.normal(context, msg, Gravity.CENTER).show();
    }

    /**
     * 显示默认的toast
     *
     * @param context
     * @param msg
     */
    public void showDefaultToast(Context context, String msg) {
        Toasty.info(context, msg, Gravity.CENTER).show();
    }

    /**
     * 显示一个 带回掉监听的dialog
     *
     * @param context
     * @param msg
     * @param listener
     */
    public void showMessage(Context context, String msg, final DialogListener listener) {
        final AlertDialog alertDialog = buildDialog(context);
        Window window = alertDialog.getWindow();
        window.setContentView(R.layout.dialog_message);
        TextView textView = (TextView) window.findViewById(R.id.tv_title);
        textView.setText(context.getString(R.string.AlertDialog_prompt));
        textView = (TextView) window.findViewById(R.id.tv_message);
        textView.setText(msg);

        Button exit_btn = (Button) window.findViewById(R.id.btn_ok);
        exit_btn.setText(context.getString(R.string.SummaryActivity_String30));

        exit_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.closeDialog(alertDialog);
            }
        });
    }

    /**
     * 限制網絡流量窗體
     *
     * @param context
     * @return
     */
    public AlertDialog showMessageForLimitDialog(Context context) {
        final AlertDialog alertDialog = buildDialog(context);
        Window window = alertDialog.getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

        window.setContentView(R.layout.net_work_limit_layout);
        Button btn_limit_no = (Button) window.findViewById(R.id.btn_limit_no);
        btn_limit_no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
        return alertDialog;
    }

    public ProgressDialog createProgressDialog(Context context, String msg) {
        ProgressDialog mProgressDialog = new ProgressDialog(context, R.style.progress_dialog);
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        mProgressDialog.setMessage(msg);
        mProgressDialog.setCancelable(false);
        return mProgressDialog;
    }


    /**
     * 構建一個dialog
     *
     * @param context
     * @return
     */
    public AlertDialog buildDialog(Context context) {
        synchronized (AlertDialogUtils.class) {
            AlertDialog alertDialog = new AlertDialog.Builder(context, 0).create();
            alertDialog.show();
            alertDialog.setCanceledOnTouchOutside(false);
            alertDialog.setCancelable(false);
            alertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
            alertDialog.getWindow().setGravity(Gravity.CENTER);
            alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            return alertDialog;
        }
    }

    /**
     * 加载进度条dialog
     */
    private AlertDialog progressDialog;

    public void showProgressDialog(Context context, int message) {
        showProgressDialog(context, context.getString(message));
    }

    public void showProgressDialog(Context context, String message) {
        if(context == null || progressDialog == null || progressDialog.getWindow() == null){
            return;
        }
        try {
            hideProgress();
            progressDialog.show();

            View toastView = View.inflate(context, R.layout.toast_view, null);
            TextView tvMessage = (TextView) toastView.findViewById(R.id.tv_name);
            tvMessage.setText(message);
            progressDialog.getWindow().setContentView(toastView);
        }catch (Exception e){
            e.printStackTrace();
        }


    }

    /**
    * 初始化dialog(在MainActivity初始化,保持的一个全局dialog)
    * @param context :Activity
    * @retrun
    */
    public void initProgressDialog(Context context){
        if(context == null){
            return;
        }
        if (progressDialog == null) {
            progressDialog = new AlertDialog.Builder(context, 0).create();
        }

        Window progressDialogWindow = progressDialog.getWindow();
        if(progressDialog.getWindow() == null){
            return;
        }
        progressDialog.setCanceledOnTouchOutside(false);
        progressDialog.setCancelable(false);
        progressDialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
        progressDialogWindow.setGravity(Gravity.CENTER);
        progressDialogWindow.setBackgroundDrawableResource(android.R.color.transparent);
    }

    /**
    * 销毁dialog,同时销毁单例对象
    * @param
    * @retrun
    */
    public void dismissDialog(){

        try {
            if(progressDialog == null){
                return;
            }
            if(progressDialog.isShowing()){
                progressDialog.dismiss();
            }
            progressDialog.cancel();
            progressDialog = null;
            instance = null;
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public boolean isShowingProgressDialog() {
        return progressDialog != null && progressDialog.isShowing();
    }

    public void hideProgress() {
        try {
            if (progressDialog != null && progressDialog.isShowing()) {
                progressDialog.dismiss();
            }
        } catch (Exception e) {
            e.printStackTrace();
            LogUtils.e(e);
        }
    }

    public interface OnClickListener {
        /**
         * 点击事件回调
         *
         * @param view      view
         * @param editValue edit对话框的值
         * @return 处理是否成功
         */
        boolean onClick(View view, String editValue);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值