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);
}
}
对话框工具类
最新推荐文章于 2021-12-30 12:07:52 发布