package com.mogujie.tt.widget; import android.app.Dialog; import android.content.Context; import android.text.TextUtils; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup.MarginLayoutParams; import android.widget.Button; import android.widget.TextView; import com.mogujie.tt.R; import com.mogujie.tools.ScreenTools; /** * Dialog基类,提供基本的“确定”,“取消”按钮和title与message的显示。子类可以继承Builder,在content * layout中添加其他控件进行自定义。tips:cancel的回调不需要调用dialog.dismiss(),控件会自动调用 * * @author dolphinWang */ public class MGDialog extends Dialog implements View.OnClickListener { private OnButtonClickListener mOnButtonClickListener; protected View mDialogContentView; private boolean mButtonInverse; public MGDialog(Context context) { super(context); } public MGDialog(Context context, int Theme) { super(context, Theme); } @Override public void onClick(View v) { int id = v.getId(); if (R.id.imPositiveButton == id) { if (mOnButtonClickListener != null) { if (mButtonInverse) { mOnButtonClickListener.onCancelButtonClick(this); dismiss(); } else { mOnButtonClickListener.onOKButtonClick(this); } } } else if (R.id.imNegativeButton == id) { if (mOnButtonClickListener != null) { if (mButtonInverse) { mOnButtonClickListener.onOKButtonClick(this); } else { mOnButtonClickListener.onCancelButtonClick(this); dismiss(); } } } } public void setOnButtonClickListener(OnButtonClickListener l) { mOnButtonClickListener = l; } public void setTitleText(String text) { if (TextUtils.isEmpty(text)) { return; } ((TextView) mDialogContentView.findViewById(R.id.imTitle)).setText(text); } public void setSubTitleText(String text) { if (TextUtils.isEmpty(text)) { return; } ((TextView) mDialogContentView.findViewById(R.id.imSubTitle)) .setText(text); } @Override public void show() { super.show(); setContentView(mDialogContentView); } public interface OnButtonClickListener { public void onOKButtonClick(MGDialog dialog); public void onCancelButtonClick(MGDialog dialog); } public static class DialogBuilder { protected String positiveButtonText; protected String negativeButtonText; protected String titleText; protected String subTitleText; protected boolean buttonInverse; protected int subTitleTextGravity = Integer.MIN_VALUE; protected MGDialog dialog; protected Context context; protected View dialogLayout; protected LayoutInflater mInflater; public DialogBuilder(Context context) { this.context = context; mInflater = LayoutInflater.from(context); } public DialogBuilder setPositiveButtonText(String positiveButtonText) { this.positiveButtonText = positiveButtonText; return this; } public DialogBuilder setNegativeButtonText(String negativeButtonText) { this.negativeButtonText = negativeButtonText; return this; } public DialogBuilder setTitleText(String titleText) { this.titleText = titleText; return this; } public DialogBuilder setSubTitleText(String subTitleText) { this.subTitleText = subTitleText; return this; } public DialogBuilder setSubTitleTextGravity(int gravity) { this.subTitleTextGravity = gravity; return this; } public DialogBuilder inverseButton() { buttonInverse = true; return this; } protected void setupViews() { dialog.getWindow().getAttributes().gravity = Gravity.CENTER; // dialog.getWindow().setWindowAnimations(R.style.PopupAnimation); dialogLayout = mInflater.inflate(R.layout.tt_view_dialog_base, null); Button okBtn = (Button) dialogLayout .findViewById(R.id.imPositiveButton); if (!TextUtils.isEmpty(positiveButtonText)) { okBtn.setOnClickListener(dialog); okBtn.setText(positiveButtonText); } else { okBtn.setVisibility(View.GONE); } Button cancelBtn = (Button) dialogLayout .findViewById(R.id.imNegativeButton); if (!TextUtils.isEmpty(negativeButtonText)) { cancelBtn.setOnClickListener(dialog); cancelBtn.setText(negativeButtonText); } else { cancelBtn.setVisibility(View.GONE); MarginLayoutParams mlp = (MarginLayoutParams) okBtn.getLayoutParams(); mlp.leftMargin = 0; } TextView titleView = (TextView) dialogLayout .findViewById(R.id.imTitle); if (!TextUtils.isEmpty(titleText)) { titleView.setVisibility(View.VISIBLE); titleView.setText(titleText); } if (!TextUtils.isEmpty(subTitleText)) { TextView subTitleView = (TextView) dialogLayout .findViewById(R.id.imSubTitle); subTitleView.setVisibility(View.VISIBLE); subTitleView.setText(subTitleText); if (subTitleTextGravity != Integer.MIN_VALUE) { subTitleView.setGravity(subTitleTextGravity); } } else { // title 需要设置一下bottom margin MarginLayoutParams mlp = (MarginLayoutParams) titleView .getLayoutParams(); mlp.bottomMargin = ScreenTools.instance(context).dip2px(30); } dialog.mDialogContentView = dialogLayout; dialog.mButtonInverse = buttonInverse; } /** * @return */ public MGDialog build() { dialog = new MGDialog(context, R.style.imDialog); setupViews(); return dialog; } } }