package com.android.app_base.base.dialog; import static com.blankj.utilcode.util.StringUtils.getString; import android.content.Context; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.LayoutRes; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import com.android.app_base.R; /** * 具体实现类dialog,通用类型 */ public final class UIDialog { @SuppressWarnings("unchecked") public static class Builder> extends BaseDialog.Builder { @Nullable private OnListener mListener; private boolean mAutoDismiss = true; private final ViewGroup mContainerLayout; private final TextView mTitleView; private final TextView mContentView; private final TextView mCancelView; private final TextView mConfirmView; public Builder(Context context) { super(context); setContentView(R.layout.dialog_ui); setAnimStyle(BaseDialog.ANIM_IOS); setGravity(Gravity.CENTER); mContainerLayout = findViewById(R.id.ll_ui_container); mTitleView = findViewById(R.id.tv_ui_title); mContentView = findViewById(R.id.tv_content); mCancelView = findViewById(R.id.tv_ui_cancel); mConfirmView = findViewById(R.id.tv_ui_confirm); setOnClickListener(mCancelView, mConfirmView); } public B setCustomView(@LayoutRes int id) { return setCustomView(LayoutInflater.from(getContext()).inflate(id, mContainerLayout, false)); } public B setCustomView(View view) { mContainerLayout.addView(view, 1); return (B) this; } public B setTitle(@StringRes int id) { return setTitle(getString(id)); } public B setTitle(CharSequence text) { mTitleView.setText(text); mTitleView.setVisibility((text == null || "".equals(text.toString())) ? View.GONE : View.VISIBLE); return (B) this; } public B setContent(CharSequence text) { mContentView.setText(text); return (B) this; } public B setCancel(@StringRes int id) { return setCancel(getString(id)); } public B setCancel(CharSequence text) { mCancelView.setText(text); mCancelView.setVisibility((text == null || "".equals(text.toString())) ? View.GONE : View.VISIBLE); return (B) this; } public B setConfirm(@StringRes int id) { return setConfirm(getString(id)); } public B setConfirm(CharSequence text) { mConfirmView.setText(text); return (B) this; } public B setAutoDismiss(boolean dismiss) { mAutoDismiss = dismiss; return (B) this; } public void autoDismiss() { if (mAutoDismiss) { dismiss(); } } public B setListener(OnListener listener) { mListener = listener; return (B) this; } @Override public BaseDialog show() { return super.show(); } @Override public void onClick(View view) { int viewId = view.getId(); if (viewId == R.id.tv_ui_confirm) { autoDismiss(); if (mListener == null) { return; } mListener.onConfirm(getDialog()); } else if (viewId == R.id.tv_ui_cancel) { autoDismiss(); if (mListener == null) { return; } mListener.onCancel(getDialog()); } } } public interface OnListener { /** * 点击确定时回调 */ void onConfirm(BaseDialog dialog); /** * 点击取消时回调 */ default void onCancel(BaseDialog dialog) { dialog.dismiss(); } } }