/**
* author : lipan
* filename : CommDialog.java
* create_time : 2014年4月14日 下午3:55:33
*/
package com.sets.speedtest.common;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.sets.speedtest.R;
import com.sets.speedtest.constant.C;
import com.sets.speedtest.listener.OnDialogClickListener;
import com.sets.speedtest.utils.StringB;
import com.sets.speedtest.utils.ViewUtils;
/**
* @author : lipan
* @create_time : 2014年4月14日 下午3:55:33
* @desc : 通用提示框...
* @update_time :
* @update_desc : 使用方法:
*
* 弹出提示信息Dialog:CommAlertDialog.showInfoDialog(params);
*
* 弹出Confirm Dialog:showConfirmDialog.showConfirmDialog(params);
*
*/
public class CommDialog
{
public static AlertDialog alertDialog;
public static AlertDialog showInfoDialog(Context context,String message ,final OnDialogClickListener dialogClickListener )
{
return showInfoDialog(context, null , message, null, C.NEGATIVE_B, C.NEGATIVE_B, dialogClickListener);
}
/**
*
* 显示提示信息框
*
* @param context
* 上下文对象
* @param title
* 标题
* @param message
* 要显示的文本信息
* @param btnText
* 取消按钮、确定按钮显示文字
* @param canceledOnTouchOutside
* 点击Dialog周围隐藏dialog
* @param cancelClickListener
* 取消按钮点击事件
* @param cancelAble
* 点击返回按钮是否可退出
* @param onConfirmClickListener
* 确定按钮点击事件
* @return
*/
@SuppressLint("InflateParams")
public static AlertDialog showInfoDialog(Context context, Integer title , String message,
String btnText, Boolean canceledOnTouchOutside,
Boolean cancelAble, final OnDialogClickListener dialogClickListener)
{
// 自定义 alertdialog 视图
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View dialogView = inflater.inflate(R.layout.comm_dialog_info, null);
// 标题
TextView dialogTitle = (TextView)dialogView.findViewById(R.id.dialogTitle);
if (null!=title)
{
dialogTitle.setText(title);
}
// 内容
LinearLayout dialogContent = (LinearLayout)dialogView.findViewById(R.id.dialogContent);
TextView dialogText = new TextView(context);
dialogText.setText(message);
dialogText.setTextSize(ViewUtils.getDimen(context, R.dimen.text_size_small));
dialogContent.addView(dialogText);
// 取消按钮
Button confirmBtn = (Button) dialogView.findViewById(R.id.dialog_confirm);
if (!StringB.isBlank(btnText))
{
confirmBtn.setText(btnText);
}
confirmBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
dismiss();
if (null != dialogClickListener)
{
dialogClickListener.onClick(v);
}
}
});
dismiss();
alertDialog = new AlertDialog.Builder(context).create();
alertDialog.show();
//必须先show()才能获取到window对象。
LayoutParams layoutParam = alertDialog.getWindow().getAttributes();
layoutParam.width = ViewUtils.getDeviceWidth(context)*6/7;
layoutParam.height = LayoutParams.WRAP_CONTENT;
alertDialog.getWindow().setAttributes(layoutParam);
alertDialog.setContentView(dialogView);
if (null != canceledOnTouchOutside)
{
alertDialog.setCanceledOnTouchOutside(canceledOnTouchOutside);
}
alertDialog.setCancelable(cancelAble);
return alertDialog;
}
public static AlertDialog showConfirmDialog(Context context,Integer messageId ,final OnDialogClickListener dialogClickListener )
{
return showConfirmDialog(context, null , messageId, null, null, C.NEGATIVE_B, C.NEGATIVE_B, dialogClickListener);
}
/**
*
* 显示对话框
*
* @param context
* 上下文对象
* @param title
* 标题
* @param message
* 要显示的文本信息
* @param btnText
* 取消按钮、确定按钮显示文字
* @param canceledOnTouchOutside
* 点击Dialog周围隐藏dialog
* @param cancelClickListener
* 取消按钮点击事件
* @param cancelAble
* 点击返回按钮是否可退出
* @param onConfirmClickListener
* 确定按钮点击事件
* @return
*/
@SuppressLint("InflateParams")
public static AlertDialog showConfirmDialog(Context context,Integer title , Integer message,
String leftBtnText, String rightBtnText, Boolean canceledOnTouchOutside,
Boolean cancelAble, final OnDialogClickListener dialogClickListener)
{
// 自定义 alertdialog 视图
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View dialogView = inflater.inflate(R.layout.comm_dialog_confirm, null);
// 标题
TextView dialogTitle = (TextView)dialogView.findViewById(R.id.dialogTitle);
if (null!=title)
{
ViewUtils.show(dialogTitle);
dialogTitle.setText(title);
}
// 内容
LinearLayout dialogContent = (LinearLayout)dialogView.findViewById(R.id.dialogContent);
TextView dialogText = new TextView(context);
dialogText.setText(message);
dialogText.setTextSize(ViewUtils.getDimen(context, R.dimen.text_size_small));
dialogContent.addView(dialogText);
// 取消按钮
Button cancelBtn = (Button) dialogView.findViewById(R.id.dialog_cancel);
if (!StringB.isBlank(leftBtnText))
{
cancelBtn.setText(leftBtnText);
}
cancelBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
dismiss();
if (null != dialogClickListener)
{
dialogClickListener.onLeftClick(v);
}
}
});
// 确定按钮
Button confirmBtn = (Button) dialogView.findViewById(R.id.dialog_confirm);
if (!StringB.isBlank(rightBtnText))
{
confirmBtn.setText(rightBtnText);
}
confirmBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
dismiss();
if (null != dialogClickListener)
{
dialogClickListener.onRightClick(v);
}
}
});
dismiss();
alertDialog = new AlertDialog.Builder(context).create();
alertDialog.show();
//必须先show()才能获取到window对象。
LayoutParams layoutParam = alertDialog.getWindow().getAttributes();
layoutParam.width = ViewUtils.getDeviceWidth(context)*6/7;
layoutParam.height = LayoutParams.WRAP_CONTENT;
alertDialog.getWindow().setAttributes(layoutParam);
alertDialog.setContentView(dialogView);
if (null != canceledOnTouchOutside)
{
alertDialog.setCanceledOnTouchOutside(canceledOnTouchOutside);
}
alertDialog.setCancelable(cancelAble);
return alertDialog;
}
/**
*
* 显示对话框
*
* @param context
* 上下文对象
* @param title
* 标题
* @param view
* 要显示的view
* @param btnText
* 取消按钮、确定按钮显示文字
* @param canceledOnTouchOutside
* 点击Dialog周围隐藏dialog
* @param cancelClickListener
* 取消按钮点击事件
* @param cancelAble
* 点击返回按钮是否可退出
* @param onConfirmClickListener
* 确定按钮点击事件
* @return
*/
@SuppressLint("InflateParams")
public static AlertDialog showConfirmDialog(Context context,Integer title , View view,
String leftBtnText, String rightBtnText, Boolean canceledOnTouchOutside,
Boolean cancelAble, final OnDialogClickListener dialogClickListener)
{
// 自定义 alertdialog 视图
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View dialogView = inflater.inflate(R.layout.comm_dialog_confirm, null);
// 标题
TextView dialogTitle = (TextView)dialogView.findViewById(R.id.dialogTitle);
if (null!=title)
{
ViewUtils.show(dialogTitle);
dialogTitle.setText(title);
}
// 内容
LinearLayout dialogContent = (LinearLayout)dialogView.findViewById(R.id.dialogContent);
dialogContent.addView(view);
// 取消按钮
Button cancelBtn = (Button) dialogView.findViewById(R.id.dialog_cancel);
if (!StringB.isBlank(leftBtnText))
{
cancelBtn.setText(leftBtnText);
}
cancelBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
dismiss();
if (null != dialogClickListener)
{
dialogClickListener.onLeftClick(v);
}
}
});
// 确定按钮
Button confirmBtn = (Button) dialogView.findViewById(R.id.dialog_confirm);
if (!StringB.isBlank(rightBtnText))
{
confirmBtn.setText(rightBtnText);
}
confirmBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
dismiss();
if (null != dialogClickListener)
{
dialogClickListener.onRightClick(v);
}
}
});
dismiss();
alertDialog = new AlertDialog.Builder(context).create();
alertDialog.show();
//必须先show()才能获取到window对象。
LayoutParams layoutParam = alertDialog.getWindow().getAttributes();
layoutParam.width = ViewUtils.getDeviceWidth(context)*6/7;
layoutParam.height = LayoutParams.WRAP_CONTENT;
alertDialog.getWindow().setAttributes(layoutParam);
alertDialog.setContentView(dialogView);
if (null != canceledOnTouchOutside)
{
alertDialog.setCanceledOnTouchOutside(canceledOnTouchOutside);
}
alertDialog.setCancelable(cancelAble);
return alertDialog;
}
/**
* 是否在显示...
*
* @return
*/
public static boolean isShowing()
{
if (null == alertDialog)
{
return false;
}
return alertDialog.isShowing();
}
/**
* 隐藏Dialog
*/
public static void dismiss()
{
if (null != alertDialog && alertDialog.isShowing())
{
alertDialog.dismiss();
alertDialog = null;
}
}
}