package com.siberiadante.customdialoglib; import android.app.Dialog; import android.content.Context; import android.view.Display; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; /** * @Created SiberiaDante * @Describe: 常规的提示确认dialog * @Time: 2017/6/29 * @Email: [email protected] * @GitHub: https://github.com/SiberiaDante */ public class EnsureDialog { private final Display display; private Context context; private TextView mTvTitle; private TextView mTvSubTitle; private TextView mTvSure; private TextView mTvCancel; private TextView mTvOK; private ImageView mIvIcon; private Dialog dialog; private Window dialogWindow; private LinearLayout mLinearBottom; public EnsureDialog(Context context) { this.context = context; final WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); display = windowManager.getDefaultDisplay(); dialog = new Dialog(context, R.style.Custom_Dialog_Style); dialogWindow = dialog.getWindow(); } /** * 构建 * * @return */ public EnsureDialog builder() { final View view = LayoutInflater.from(context).inflate(R.layout.dialog_ensure_layout, null, false); LinearLayout mLinearDialog = ((LinearLayout) view.findViewById(R.id.linear_dialog)); mLinearBottom = ((LinearLayout) view.findViewById(R.id.linear_bottom)); mIvIcon = ((ImageView) view.findViewById(R.id.iv_icon)); mTvTitle = ((TextView) view.findViewById(R.id.tv_title)); mTvSubTitle = ((TextView) view.findViewById(R.id.tv_sub_title)); mTvSure = ((TextView) view.findViewById(R.id.tv_sure)); mTvOK = ((TextView) view.findViewById(R.id.tv_ok)); mTvCancel = ((TextView) view.findViewById(R.id.tv_cancel)); dialog.setContentView(view); mLinearDialog.setLayoutParams(new FrameLayout.LayoutParams(((int) (display.getWidth() * 0.80)), LinearLayout.LayoutParams.WRAP_CONTENT)); dialogWindow.setGravity(Gravity.CENTER); return this; } /** * setting dialog position * * @param gravity * @return */ public EnsureDialog setGravity(int gravity) { dialogWindow.setGravity(gravity); return this; } /** * setting dialog icon * * @param drawable * @return */ public EnsureDialog setIncon(int drawable) { mIvIcon.setVisibility(View.VISIBLE); mIvIcon.setImageResource(drawable); return this; } /** * setting dialog title * * @param title * @return */ public EnsureDialog setTitle(String title) { if ("".equals(title)) { mTvTitle.setText("标题"); } else { mTvTitle.setText(title); } return this; } /** * @param title * @param color * @return */ public EnsureDialog setTitle(String title, int color) { if ("".equals(title)) { mTvTitle.setText("标题"); } else { mTvTitle.setText(title); } mTvTitle.setTextColor(color); return this; } /** * setting dialog title * * @param title * @return */ public EnsureDialog setSubTitle(String title) { if ("".equals(title)) { mTvSubTitle.setVisibility(View.GONE); } else { mTvSubTitle.setVisibility(View.VISIBLE); // mTvTitle.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); mTvTitle.setGravity(Gravity.BOTTOM); mTvSubTitle.setText(title); } return this; } /** * @param title * @param color * @return */ public EnsureDialog setSubTitle(String title, int color) { if ("".equals(title)) { mTvSubTitle.setVisibility(View.GONE); mTvSubTitle.setText("标题"); } else { mTvSubTitle.setVisibility(View.VISIBLE); mTvTitle.setGravity(Gravity.BOTTOM); mTvSubTitle.setText(title); } mTvSubTitle.setTextColor(color); return this; } /** * setting dialog right button * * @param text * @param listener * @return */ public EnsureDialog setPositiveButton(String text, final View.OnClickListener listener) { if ("".equals(text)) { mTvSure.setText("确认"); } else { mTvSure.setText(text); } mTvSure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(v); } }); return this; } /** * 可设置颜色 * * @param text * @param color * @param listener * @return */ public EnsureDialog setPositiveButton(String text, int color, final View.OnClickListener listener) { if ("".equals(text)) { mTvSure.setText("确认"); } else { mTvSure.setText(text); } mTvSure.setTextColor(color); mTvSure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(v); } }); return this; } /** * setting dialog left button * * @param text * @param listener * @return */ public EnsureDialog setNegativeButton(String text, final View.OnClickListener listener) { if ("".equals(text)) { mTvCancel.setText("取消"); } else { mTvCancel.setText(text); } mTvCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(v); dialog.dismiss(); } }); return this; } public EnsureDialog setNegativeButton(String text, int color, final View.OnClickListener listener) { if ("".equals(text)) { mTvCancel.setText("取消"); } else { mTvCancel.setText(text); } mTvCancel.setTextColor(color); mTvCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(v); dialog.dismiss(); } }); return this; } /** * setting dialog center button * * @param text * @param listener * @return */ public EnsureDialog setCenterButton(String text, final View.OnClickListener listener) { if ("".equals(text)) { mTvOK.setText("确认"); } else { mTvOK.setText(text); } mLinearBottom.setVisibility(View.GONE); mTvOK.setVisibility(View.VISIBLE); mTvOK.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(v); dialog.dismiss(); } }); return this; } /** * setting dialog center button * * @param text * @param listener * @return */ public EnsureDialog setCenterButton(String text, int color, final View.OnClickListener listener) { if ("".equals(text)) { mTvOK.setText("确认"); } else { mTvOK.setText(text); } mTvOK.setTextColor(color); mLinearBottom.setVisibility(View.GONE); mTvOK.setVisibility(View.VISIBLE); mTvOK.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(v); dialog.dismiss(); } }); return this; } /** * setting dialog cancelable * * @param cancelable * @return */ public EnsureDialog setCancelable(boolean cancelable) { dialog.setCancelable(cancelable); return this; } /** * cancel dialog * * @return */ public EnsureDialog dismiss() { dialog.dismiss(); return this; } /** * show dialog */ public void show() { dialog.show(); } }