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<B extends UIDialog.Builder<?>>
|
extends BaseDialog.Builder<B> {
|
@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);
|
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);
|
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) {}
|
}
|
}
|