package com.mm.android.deviceaddmodule.mobilecommon.dialog;
|
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.DialogInterface.OnDismissListener;
|
import android.content.res.Configuration;
|
import android.graphics.Paint;
|
import android.os.Bundle;
|
import android.support.v4.app.DialogFragment;
|
import android.text.TextUtils;
|
import android.util.DisplayMetrics;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.view.WindowManager;
|
import android.widget.CheckBox;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.mm.android.deviceaddmodule.R;
|
import com.mm.android.deviceaddmodule.mobilecommon.base.BaseDialogFragment;
|
import com.mm.android.deviceaddmodule.mobilecommon.utils.UIUtils;
|
|
public class LCAlertDialog extends BaseDialogFragment implements OnClickListener {
|
|
public static final int CANCEL_BUTTON = 0;
|
|
public static final int CONFIRM_BUTTON = 1;
|
|
public static final int MESSAGE2_TEXT = 2;
|
|
private CharSequence mMessage;
|
|
private CharSequence mMessage2;
|
|
private String mTitle;
|
|
private int mTitleColor = -1;
|
|
private String mNagativeBtnName;
|
|
private String mPositiveBtnName;
|
|
private boolean mIsCheckBoxEnable = false;
|
|
private String mCheckBoxText;
|
|
private OnClickListener mMessage2BtnListener;
|
|
private OnClickListener mNagativeBtnListener;
|
|
private OnClickListener mPositiveBtnListener;
|
|
private OnDismissListener mDismissListener;
|
|
private TextView mTitleTv;
|
|
private TextView mMessageTv;
|
|
private TextView mMessageTv2;
|
|
private CheckBox mNeverRemindBtn;
|
|
private TextView mLeftBtn;
|
|
private TextView mRightBtn;
|
|
private LinearLayout mTwoButtonLayout;
|
|
private TextView mSingleBtn;
|
|
public interface DialogShowListener {
|
public void onShow();
|
}
|
|
private DialogShowListener mDialogShowListener;
|
|
public interface OnClickListener {
|
public void onClick(LCAlertDialog dialog, int which, boolean isChecked);
|
}
|
|
boolean canCanceledOnTouchOutside = false;
|
|
public void setCanceledOnTouchOutside(boolean canCanceledDialogOnTouchOutside) {
|
canCanceledOnTouchOutside = canCanceledDialogOnTouchOutside;
|
}
|
|
private void setMessage(CharSequence message) {
|
mMessage = message;
|
}
|
|
private void setMessage2(CharSequence message2, OnClickListener listener) {
|
mMessage2 = message2;
|
mMessage2BtnListener = listener;
|
}
|
|
private void setTitle(String message) {
|
mTitle = message;
|
}
|
|
private void setTitleColor(int titleColor) {
|
mTitleColor = titleColor;
|
}
|
|
private void setNegativeButton(String name, OnClickListener l) {
|
mNagativeBtnName = name;
|
|
mNagativeBtnListener = l;
|
}
|
|
private void setPositiveButton(String name, OnClickListener l) {
|
mPositiveBtnName = name;
|
|
mPositiveBtnListener = l;
|
}
|
|
private void setOnDismissListener(OnDismissListener l) {
|
mDismissListener = l;
|
}
|
|
private void setDialogShowListener(DialogShowListener l) {
|
mDialogShowListener = l;
|
}
|
|
private void setCheckBoxEnable(boolean isEnable) {
|
mIsCheckBoxEnable = isEnable;
|
}
|
|
private void setCheckBoxText(String name) {
|
mCheckBoxText = name;
|
}
|
|
public static LCAlertDialog newInstance() {
|
return new LCAlertDialog();
|
}
|
|
@Override
|
public void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setStyle(DialogFragment.STYLE_NORMAL, R.style.mobile_common_checks_dialog);
|
}
|
|
@Override
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
View view = inflater.inflate(R.layout.mobile_common_lc_alert_dialog_layout, null);
|
initView(view);
|
if (mDialogShowListener != null) {
|
mDialogShowListener.onShow();
|
}
|
return view;
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
translationUp();
|
}
|
|
private void translationUp() {
|
if (getActivity() != null && !getActivity().isFinishing()) {
|
WindowManager.LayoutParams params = null;
|
try {
|
params = getDialog().getWindow().getAttributes();
|
} catch (Exception e) {
|
}
|
if (params != null) {
|
params.y = (int) -(100 * UIUtils.getScreenDensity(getActivity()) / 3.0f);
|
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
|
int configure = getResources().getConfiguration().orientation;
|
if (configure == Configuration.ORIENTATION_PORTRAIT) {
|
params.width = metrics.widthPixels * 4 / 5;
|
} else if (configure == Configuration.ORIENTATION_LANDSCAPE) {
|
params.width = metrics.heightPixels * 4 / 5;
|
} else {
|
params.width = metrics.widthPixels * 4 / 5;
|
}
|
|
getDialog().getWindow().setAttributes(params);
|
}
|
|
}
|
|
}
|
|
@Override
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
super.onViewCreated(view, savedInstanceState);
|
getDialog().setCanceledOnTouchOutside(canCanceledOnTouchOutside);
|
}
|
|
private void initView(View rootView) {
|
// rootView.setMinimumWidth(UIUtils.getDefaultDialogWidth(getActivity()));
|
mTitleTv = rootView.findViewById(R.id.tv_title);
|
mMessageTv = rootView.findViewById(R.id.tv_message);
|
mMessageTv2 = rootView.findViewById(R.id.tv_message2);
|
mMessageTv2.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线
|
mMessageTv2.getPaint().setAntiAlias(true);//抗锯齿
|
mMessageTv2.setTextColor(getActivity().getResources().getColor(R.color.c5));
|
mLeftBtn = rootView.findViewById(R.id.tv_left_btn);
|
mRightBtn = rootView.findViewById(R.id.tv_right_btn);
|
mSingleBtn = rootView.findViewById(R.id.tv_single_btn);
|
mNeverRemindBtn = rootView.findViewById(R.id.rb_never_remind);
|
|
mMessageTv2.setOnClickListener(this);
|
mNeverRemindBtn.setOnClickListener(this);
|
mLeftBtn.setOnClickListener(this);
|
mRightBtn.setOnClickListener(this);
|
mSingleBtn.setOnClickListener(this);
|
|
mTwoButtonLayout = rootView.findViewById(R.id.two_button_layout);
|
|
if (!TextUtils.isEmpty(mTitle)) {
|
mTitleTv.setVisibility(View.VISIBLE);
|
mTitleTv.setText(mTitle);
|
} else {
|
mTitleTv.setVisibility(View.GONE);
|
}
|
|
if (mTitleColor != -1) {
|
mTitleTv.setTextColor(mTitleColor);
|
}
|
|
if (!TextUtils.isEmpty(mMessage)) {
|
mMessageTv.setVisibility(View.VISIBLE);
|
mMessageTv.setText(mMessage);
|
} else {
|
mMessageTv.setVisibility(View.GONE);
|
}
|
|
if (!TextUtils.isEmpty(mMessage2)) {
|
mMessageTv2.setVisibility(View.VISIBLE);
|
mMessageTv2.setText(mMessage2);
|
} else {
|
mMessageTv2.setVisibility(View.GONE);
|
}
|
|
if (!TextUtils.isEmpty(mNagativeBtnName) && !TextUtils.isEmpty(mPositiveBtnName)) {
|
mTwoButtonLayout.setVisibility(View.VISIBLE);
|
mSingleBtn.setVisibility(View.GONE);
|
|
mLeftBtn.setText(mNagativeBtnName);
|
mRightBtn.setText(mPositiveBtnName);
|
|
} else {
|
mTwoButtonLayout.setVisibility(View.GONE);
|
mSingleBtn.setVisibility(View.VISIBLE);
|
mSingleBtn.setOnClickListener(this);
|
if (!TextUtils.isEmpty(mNagativeBtnName)) {
|
mSingleBtn.setText(mNagativeBtnName);
|
} else if (!TextUtils.isEmpty(mPositiveBtnName)) {
|
mSingleBtn.setText(mPositiveBtnName);
|
}
|
}
|
|
if (mIsCheckBoxEnable) {
|
mNeverRemindBtn.setVisibility(View.VISIBLE);
|
}
|
|
if (!TextUtils.isEmpty(mCheckBoxText)) {
|
mNeverRemindBtn.setText(mCheckBoxText);
|
}
|
}
|
|
@Override
|
public void onDismiss(DialogInterface dialog) {
|
super.onDismiss(dialog);
|
if (mDismissListener != null) {
|
mDismissListener.onDismiss(dialog);
|
}
|
if (mNeverRemindBtn != null) mNeverRemindBtn.setOnClickListener(null);
|
if (mLeftBtn != null) mLeftBtn.setOnClickListener(null);
|
if (mRightBtn != null) mRightBtn.setOnClickListener(null);
|
if (mSingleBtn != null) mSingleBtn.setOnClickListener(null);
|
mDismissListener = null;
|
mDialogShowListener = null;
|
mPositiveBtnListener = null;
|
mNagativeBtnListener = null;
|
mMessage2BtnListener = null;
|
}
|
|
@Override
|
public void onClick(View v) {
|
|
int i = v.getId();
|
if (i == R.id.tv_left_btn) {
|
|
if (mNagativeBtnListener != null) {
|
mNagativeBtnListener.onClick(this, CANCEL_BUTTON, mNeverRemindBtn.isChecked());
|
}
|
dismissAllowingStateLoss();
|
|
} else if (i == R.id.tv_right_btn) {
|
|
if (mPositiveBtnListener != null) {
|
mPositiveBtnListener.onClick(this, CONFIRM_BUTTON, mNeverRemindBtn.isChecked());
|
}
|
dismissAllowingStateLoss();
|
|
} else if (i == R.id.tv_single_btn) {
|
|
if (!TextUtils.isEmpty(mNagativeBtnName)) {
|
if (mNagativeBtnListener != null) {
|
mNagativeBtnListener.onClick(this, CANCEL_BUTTON, mNeverRemindBtn.isChecked());
|
}
|
} else if (!TextUtils.isEmpty(mPositiveBtnName)) {
|
if (mPositiveBtnListener != null) {
|
mPositiveBtnListener.onClick(this, CONFIRM_BUTTON, mNeverRemindBtn.isChecked());
|
}
|
}
|
dismissAllowingStateLoss();
|
} else if (i == R.id.rb_never_remind) {// mNeverRemindBtn.setChecked(!mNeverRemindBtn.isChecked());
|
|
} else if (i == R.id.tv_message2) {
|
if (mMessage2BtnListener != null) {
|
mMessage2BtnListener.onClick(this, MESSAGE2_TEXT, mNeverRemindBtn.isChecked());
|
}
|
}
|
}
|
|
public static class Builder {
|
|
private Context mContext;
|
|
private CharSequence mMessage;
|
|
private CharSequence mMessage2;
|
|
private String mTitle;
|
|
private int mTitleColor = -1;
|
|
private String mNagativeBtnName;
|
|
private String mPositiveBtnName;
|
|
private String mCheckBoxText;
|
|
private boolean mIsCheckBoxEnable = false;
|
|
private OnClickListener mMessage2TextListener;
|
|
private OnClickListener mNagativeBtnListener;
|
|
private OnClickListener mPositiveBtnListener;
|
|
private OnDismissListener mDismissListener;
|
private DialogShowListener mDialogShowListener;
|
|
//点击返回键默认可以取消弹框
|
private boolean mCancelable = true;
|
|
public Builder(Context context) {
|
mContext = context;
|
}
|
|
public Builder setCancelable(boolean cancelable) {
|
this.mCancelable = cancelable;
|
return this;
|
}
|
|
public Builder setMessage(int resId) {
|
mMessage = mContext.getResources().getString(resId);
|
return this;
|
}
|
|
public Builder setMessage(CharSequence message) {
|
mMessage = message;
|
return this;
|
}
|
|
public Builder setMessage2(int resId, OnClickListener l) {
|
mMessage2 = mContext.getResources().getString(resId);
|
mMessage2TextListener = l;
|
return this;
|
}
|
|
public Builder setMessage2(CharSequence message) {
|
mMessage2 = message;
|
return this;
|
}
|
|
public Builder setTitle(int resId) {
|
mTitle = mContext.getResources().getString(resId);
|
return this;
|
}
|
|
public Builder setTitle(String message) {
|
mTitle = message;
|
return this;
|
}
|
|
public Builder setTitleColor(int resId) {
|
mTitleColor = mContext.getResources().getColor(resId);
|
return this;
|
}
|
|
public Builder setCancelButton(int resId, OnClickListener l) {
|
mNagativeBtnName = mContext.getResources().getString(resId);
|
|
mNagativeBtnListener = l;
|
|
return this;
|
}
|
|
public Builder setConfirmButton(int resId, OnClickListener l) {
|
mPositiveBtnName = mContext.getResources().getString(resId);
|
|
mPositiveBtnListener = l;
|
|
return this;
|
}
|
|
public Builder setConfirmButton(String resText, OnClickListener l) {
|
mPositiveBtnName = resText;
|
mPositiveBtnListener = l;
|
|
return this;
|
}
|
|
public Builder setOnDismissLisenter(OnDismissListener l) {
|
mDismissListener = l;
|
return this;
|
}
|
|
public Builder setDialogShowListener(DialogShowListener showListener) {
|
mDialogShowListener = showListener;
|
return this;
|
}
|
|
public Builder setCheckBoxEnable(boolean isEnable) {
|
mIsCheckBoxEnable = isEnable;
|
|
return this;
|
}
|
|
public Builder setCheckBoxText(int resId) {
|
mCheckBoxText = mContext.getResources().getString(resId);
|
mIsCheckBoxEnable = true;
|
return this;
|
}
|
|
public LCAlertDialog create() {
|
LCAlertDialog dialog = LCAlertDialog.newInstance();
|
if (mDismissListener != null) {
|
dialog.setOnDismissListener(mDismissListener);
|
}
|
if (!TextUtils.isEmpty(mTitle)) {
|
dialog.setTitle(mTitle);
|
}
|
if (mTitleColor != -1) {
|
dialog.setTitleColor(mTitleColor);
|
}
|
|
if (!TextUtils.isEmpty(mMessage)) {
|
dialog.setMessage(mMessage);
|
}
|
|
if (!TextUtils.isEmpty(mMessage2)) {
|
dialog.setMessage2(mMessage2, mMessage2TextListener);
|
}
|
|
if (!TextUtils.isEmpty(mNagativeBtnName)) {
|
dialog.setNegativeButton(mNagativeBtnName, mNagativeBtnListener);
|
}
|
|
if (!TextUtils.isEmpty(mPositiveBtnName)) {
|
dialog.setPositiveButton(mPositiveBtnName, mPositiveBtnListener);
|
}
|
if (mDialogShowListener != null) {
|
dialog.setDialogShowListener(mDialogShowListener);
|
}
|
if (!TextUtils.isEmpty(mCheckBoxText)) {
|
dialog.setCheckBoxText(mCheckBoxText);
|
}
|
|
dialog.setCheckBoxEnable(mIsCheckBoxEnable);
|
|
dialog.setCancelable(mCancelable);
|
|
return dialog;
|
}
|
}
|
|
}
|