package com.mylhyl.circledialog; import android.app.Dialog; import android.content.DialogInterface; import android.graphics.Typeface; import android.os.Build; import android.view.Gravity; import android.view.View; import android.widget.BaseAdapter; import androidx.annotation.ColorInt; import androidx.annotation.DrawableRes; import androidx.annotation.FloatRange; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; import com.mylhyl.circledialog.callback.CircleItemViewBinder; import com.mylhyl.circledialog.callback.ConfigButton; import com.mylhyl.circledialog.callback.ConfigDialog; import com.mylhyl.circledialog.callback.ConfigInput; import com.mylhyl.circledialog.callback.ConfigItems; import com.mylhyl.circledialog.callback.ConfigLottie; import com.mylhyl.circledialog.callback.ConfigPopup; import com.mylhyl.circledialog.callback.ConfigProgress; import com.mylhyl.circledialog.callback.ConfigSubTitle; import com.mylhyl.circledialog.callback.ConfigText; import com.mylhyl.circledialog.callback.ConfigTitle; import com.mylhyl.circledialog.engine.ImageLoadEngine; import com.mylhyl.circledialog.internal.CircleParams; import com.mylhyl.circledialog.params.AdParams; import com.mylhyl.circledialog.params.ButtonParams; import com.mylhyl.circledialog.params.CloseParams; import com.mylhyl.circledialog.params.DialogParams; import com.mylhyl.circledialog.params.InputParams; import com.mylhyl.circledialog.params.ItemsParams; import com.mylhyl.circledialog.params.LottieParams; import com.mylhyl.circledialog.params.PopupParams; import com.mylhyl.circledialog.params.ProgressParams; import com.mylhyl.circledialog.params.SubTitleParams; import com.mylhyl.circledialog.params.TextParams; import com.mylhyl.circledialog.params.TitleParams; import com.mylhyl.circledialog.res.values.CircleColor; import com.mylhyl.circledialog.view.listener.OnAdItemClickListener; import com.mylhyl.circledialog.view.listener.OnAdPageChangeListener; import com.mylhyl.circledialog.view.listener.OnBindBodyViewCallback; import com.mylhyl.circledialog.view.listener.OnCreateBodyViewListener; import com.mylhyl.circledialog.view.listener.OnCreateButtonListener; import com.mylhyl.circledialog.view.listener.OnCreateInputListener; import com.mylhyl.circledialog.view.listener.OnCreateLottieListener; import com.mylhyl.circledialog.view.listener.OnCreateProgressListener; import com.mylhyl.circledialog.view.listener.OnCreateTextListener; import com.mylhyl.circledialog.view.listener.OnCreateTitleListener; import com.mylhyl.circledialog.view.listener.OnInputClickListener; import com.mylhyl.circledialog.view.listener.OnInputCounterChangeListener; import com.mylhyl.circledialog.view.listener.OnLvItemClickListener; import com.mylhyl.circledialog.view.listener.OnRvItemClickListener; import com.mylhyl.circledialog.view.listener.OnShowListener; import java.util.List; /** * Created by hupei on 2017/3/29. */ public final class CircleDialog { private BaseCircleDialog mBaseCircleDialog; private CircleDialog() { } private void refresh() { if (check()) { return; } mBaseCircleDialog.refreshView(); } private void dismiss() { if (check()) { return; } mBaseCircleDialog.dialogDismiss(); } private void show(FragmentManager manager) { mBaseCircleDialog.show(manager); } private BaseCircleDialog create(CircleParams params) { return mBaseCircleDialog = BaseCircleDialog.newAbsCircleDialog(params); } private boolean check() { if (mBaseCircleDialog == null) { return true; } Dialog dialog = mBaseCircleDialog.getDialog(); if (dialog == null || !dialog.isShowing()) { return true; } return false; } public static final class Builder { private CircleDialog mCircleDialog; private CircleParams mCircleParams; public Builder() { mCircleParams = new CircleParams(); mCircleParams.dialogParams = new DialogParams(); } /** * 是否手动关闭对话框,默认按钮事件响应后自动关闭 * * @param manualClose * @return * @see {@link DialogFragment#dismissAllowingStateLoss() 手动关闭} */ public Builder setManualClose(boolean manualClose) { mCircleParams.dialogParams.manualClose = manualClose; return this; } /** * 设置对话框位置 * * @param gravity 位置 * @return this Builder */ public Builder setGravity(int gravity) { mCircleParams.dialogParams.gravity = gravity; return this; } /** * 设置对话框点击外部关闭 * * @param cancel true允许 * @return this Builder */ public Builder setCanceledOnTouchOutside(boolean cancel) { mCircleParams.dialogParams.canceledOnTouchOutside = cancel; return this; } /** * 设置对话框返回键关闭 * * @param cancel true允许 * @return this Builder */ public Builder setCancelable(boolean cancel) { mCircleParams.dialogParams.cancelable = cancel; return this; } /** * 设置对话框宽度 * * @param width 0.0 - 1.0 * @return this Builder */ public Builder setWidth(@FloatRange(from = 0.0, to = 1.0) float width) { mCircleParams.dialogParams.width = width; return this; } /** * 设置对话框最大高度 * * @param maxHeight 0.0 - 1.0 * @return this Builder */ public Builder setMaxHeight(@FloatRange(from = 0.0, to = 1.0) float maxHeight) { mCircleParams.dialogParams.maxHeight = maxHeight; return this; } /** * 设置对话框圆角 * * @param radius 半径 * @return this Builder */ public Builder setRadius(int radius) { mCircleParams.dialogParams.radius = radius; return this; } /** * 设置对话框y 坐标偏移 * * @param yOff y 坐标偏移量,默认-1 * @return this Builder */ public Builder setYoff(int yOff) { mCircleParams.dialogParams.yOff = yOff; return this; } public Builder bottomFull() { mCircleParams.dialogParams.gravity = Gravity.BOTTOM; mCircleParams.dialogParams.radius = 0; mCircleParams.dialogParams.width = 1f; mCircleParams.dialogParams.yOff = 0; return this; } public Builder setOnDismissListener(DialogInterface.OnDismissListener listener) { mCircleParams.circleListeners.dismissListener = listener; return this; } public Builder setOnCancelListener(DialogInterface.OnCancelListener listener) { mCircleParams.circleListeners.cancelListener = listener; return this; } public Builder setOnShowListener(OnShowListener listener) { mCircleParams.circleListeners.showListener = listener; return this; } public Builder setOnKeyListener(DialogInterface.OnKeyListener listener) { mCircleParams.circleListeners.keyListener = listener; return this; } public Builder configDialog(@NonNull ConfigDialog configDialog) { configDialog.onConfig(mCircleParams.dialogParams); return this; } public Builder setTitle(@NonNull String text) { newTitleParams(); mCircleParams.titleParams.text = text; return this; } public Builder setTitleIcon(@DrawableRes int icon) { newTitleParams(); mCircleParams.titleParams.icon = icon; return this; } public Builder setTitleColor(@ColorInt int color) { newTitleParams(); mCircleParams.titleParams.textColor = color; return this; } public Builder configTitle(@NonNull ConfigTitle configTitle) { newTitleParams(); configTitle.onConfig(mCircleParams.titleParams); return this; } public Builder setOnCreateTitleListener(@NonNull OnCreateTitleListener listener) { mCircleParams.circleListeners.createTitleListener = listener; return this; } public Builder setSubTitle(@NonNull String text) { newSubTitleParams(); mCircleParams.subTitleParams.text = text; return this; } public Builder setSubTitleColor(@ColorInt int color) { newSubTitleParams(); mCircleParams.subTitleParams.textColor = color; return this; } public Builder configSubTitle(@NonNull ConfigSubTitle configSubTitle) { newSubTitleParams(); configSubTitle.onConfig(mCircleParams.subTitleParams); return this; } public Builder setText(@NonNull String text) { newTextParams(); mCircleParams.textParams.text = text; return this; } public Builder setTextColor(@ColorInt int color) { newTextParams(); mCircleParams.textParams.textColor = color; return this; } public Builder configText(@NonNull ConfigText configText) { newTextParams(); configText.onConfig(mCircleParams.textParams); return this; } public Builder setOnCreateTextListener(OnCreateTextListener listener) { mCircleParams.circleListeners.createTextListener = listener; return this; } public Builder setItems(@NonNull Object items, OnLvItemClickListener listener) { newItemsParams(); mCircleParams.itemListViewType = true; ItemsParams params = mCircleParams.itemsParams; params.items = items; mCircleParams.circleListeners.itemListener = listener; return this; } public Builder setItems(@NonNull BaseAdapter adapter , OnLvItemClickListener listener) { newItemsParams(); mCircleParams.itemListViewType = true; ItemsParams params = mCircleParams.itemsParams; params.adapter = adapter; mCircleParams.circleListeners.itemListener = listener; return this; } public Builder setItems(@NonNull Object items, @NonNull OnRvItemClickListener listener) { newItemsParams(); mCircleParams.itemListViewType = false; ItemsParams params = mCircleParams.itemsParams; params.items = items; mCircleParams.circleListeners.rvItemListener = listener; return this; } public Builder setItems(@NonNull Object items, RecyclerView.LayoutManager layoutManager , @NonNull OnRvItemClickListener listener) { newItemsParams(); mCircleParams.itemListViewType = false; ItemsParams params = mCircleParams.itemsParams; params.items = items; params.layoutManager = layoutManager; mCircleParams.circleListeners.rvItemListener = listener; return this; } public Builder setItems(@NonNull RecyclerView.Adapter adapter , @NonNull RecyclerView.LayoutManager layoutManager) { newItemsParams(); mCircleParams.itemListViewType = false; ItemsParams params = mCircleParams.itemsParams; params.layoutManager = layoutManager; params.adapterRv = adapter; return this; } public Builder setItems(@NonNull RecyclerView.Adapter adapter, @NonNull RecyclerView.LayoutManager layoutManager , @NonNull RecyclerView.ItemDecoration itemDecoration) { newItemsParams(); mCircleParams.itemListViewType = false; ItemsParams params = mCircleParams.itemsParams; params.layoutManager = layoutManager; params.itemDecoration = itemDecoration; params.adapterRv = adapter; return this; } public Builder setItemsViewBinder(CircleItemViewBinder viewBinder) { newItemsParams(); mCircleParams.itemsParams.viewBinder = viewBinder; return this; } public Builder configItems(@NonNull ConfigItems configItems) { newItemsParams(); configItems.onConfig(mCircleParams.itemsParams); return this; } /** * 设置进度条文本 * * @param text 进度条文本,style = 水平样式时,支持String.format() 例如:已经下载%s * @return this Builder */ public Builder setProgressText(@NonNull String text) { newProgressParams(); mCircleParams.progressParams.text = text; return this; } /** * 设置进度条样式 * * @param style {@link ProgressParams#STYLE_HORIZONTAL 水平样式} or * {@link ProgressParams#STYLE_SPINNER} * @return this Builder */ public Builder setProgressStyle(int style) { newProgressParams(); mCircleParams.progressParams.style = style; return this; } /** * 设置圆形样式的颜色 * * @param color RGB颜色值 * @return this Builder * @since 5.0.5 */ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public Builder setProgressColor(int color) { newProgressParams(); mCircleParams.progressParams.indeterminateColor = color; return this; } public Builder setProgress(int max, int progress) { newProgressParams(); ProgressParams progressParams = mCircleParams.progressParams; progressParams.max = max; progressParams.progress = progress; return this; } public Builder setProgressDrawable(@DrawableRes int progressDrawableId) { newProgressParams(); mCircleParams.progressParams.progressDrawableId = progressDrawableId; return this; } public Builder setProgressHeight(int height) { newProgressParams(); mCircleParams.progressParams.progressHeight = height; return this; } public Builder configProgress(@NonNull ConfigProgress configProgress) { newProgressParams(); configProgress.onConfig(mCircleParams.progressParams); return this; } /** * 设置自定义内容视图 * * @param bodyViewId resLayoutId * @param listener listener * @return Builder */ public Builder setBodyView(@LayoutRes int bodyViewId, OnCreateBodyViewListener listener) { mCircleParams.bodyViewId = bodyViewId; mCircleParams.circleListeners.createBodyViewListener = listener; return this; } /** * 设置自定义内容视图 * * @param bodyView View * @param listener listener * @return Builder * @since 4.0.2 */ public Builder setBodyView(View bodyView, OnCreateBodyViewListener listener) { mCircleParams.bodyView = bodyView; mCircleParams.circleListeners.createBodyViewListener = listener; return this; } /** * 设置自定义内容视图 * * @param bodyViewId resLayoutId * @return Builder */ public Builder setBodyView(@LayoutRes int bodyViewId) { mCircleParams.bodyViewId = bodyViewId; return this; } /** * 设置自定义内容视图 * * @param bodyView View * @return Builder * @since 4.0.2 */ public Builder setBodyView(View bodyView) { mCircleParams.bodyView = bodyView; return this; } /** * 自定义框的确定按钮 * * @param text 按钮文本 * @param callback 自定义body view回调 * @return this Builder */ public Builder setPositiveBody(@NonNull String text, OnBindBodyViewCallback callback) { newPositiveParams(); ButtonParams params = mCircleParams.positiveParams; params.text = text; mCircleParams.circleListeners.bindBodyViewCallback = callback; return this; } public Builder setOnCreateProgressListener(OnCreateProgressListener listener) { mCircleParams.circleListeners.createProgressListener = listener; return this; } public Builder setInputText(@NonNull String text) { newInputParams(); mCircleParams.inputParams.text = text; return this; } /** * 是否自动显示键盘,默认不显示 * * @param show true=显示;false=隐藏 * @return Builder */ public Builder setInputShowKeyboard(boolean show) { newInputParams(); mCircleParams.inputParams.showSoftKeyboard = show; return this; } public Builder setInputText(@NonNull String text, @NonNull String hint) { newInputParams(); mCircleParams.inputParams.text = text; mCircleParams.inputParams.hintText = hint; return this; } public Builder setInputHint(@NonNull String hint) { newInputParams(); mCircleParams.inputParams.hintText = hint; return this; } public Builder setInputHeight(int height) { newInputParams(); mCircleParams.inputParams.inputHeight = height; return this; } /** * 输入框最大字符数量 * * @param maxLen 字符数量 * @return Builder */ public Builder setInputCounter(int maxLen) { newInputParams(); mCircleParams.inputParams.maxLen = maxLen; return this; } /** * 输入框最大字符数量颜色 * * @param color 色值 * @return Builder */ public Builder setInputCounterColor(@ColorInt int color) { newInputParams(); mCircleParams.inputParams.counterColor = color; return this; } /** * 输入框最大字符数量 * * @param maxLen 字符数量 * @param listener 字符计数器改变事件 * @return Builder */ public Builder setInputCounter(int maxLen, OnInputCounterChangeListener listener) { newInputParams(); mCircleParams.inputParams.maxLen = maxLen; mCircleParams.circleListeners.inputCounterChangeListener = listener; return this; } /** * 是否禁止输入表情,默认开启 * * @param disable true=禁止;false=开启 * @return this Builder */ public Builder setInputEmoji(boolean disable) { newInputParams(); mCircleParams.inputParams.isEmojiInput = disable; return this; } public Builder configInput(@NonNull ConfigInput configInput) { newInputParams(); configInput.onConfig(mCircleParams.inputParams); return this; } /** * 输入框的确定按钮 * * @param text 按钮文本 * @param listener 事件 * @return this Builder */ public Builder setPositiveInput(@NonNull String text, OnInputClickListener listener) { newPositiveParams(); ButtonParams params = mCircleParams.positiveParams; params.text = text; mCircleParams.circleListeners.inputListener = listener; return this; } public Builder setOnCreateInputListener(OnCreateInputListener listener) { mCircleParams.circleListeners.createInputListener = listener; return this; } /** * 设置动画资源
* 如果有目录,调用{@link #configLottie(ConfigLottie)} 方法, * 配置{@link LottieParams#imageAssetsFolder imageAssetsFolder属性} * * @param animationFileName * @return */ public Builder setLottieAnimation(String animationFileName) { newLottieParams(); mCircleParams.lottieParams.animationFileName = animationFileName; return this; } public Builder setLottieAnimation(int animationResId) { newLottieParams(); mCircleParams.lottieParams.animationResId = animationResId; return this; } public Builder playLottieAnimation() { newLottieParams(); mCircleParams.lottieParams.autoPlay = true; return this; } public Builder setLottieLoop(boolean loop) { newLottieParams(); mCircleParams.lottieParams.loop = loop; return this; } public Builder setLottieText(String text) { newLottieParams(); mCircleParams.lottieParams.text = text; return this; } public Builder setLottieSize(int width, int height) { newLottieParams(); mCircleParams.lottieParams.lottieWidth = width; mCircleParams.lottieParams.lottieHeight = height; return this; } public Builder configLottie(@NonNull ConfigLottie configLottie) { newLottieParams(); configLottie.onConfig(mCircleParams.lottieParams); return this; } public Builder setOnCreateLottieListener(OnCreateLottieListener listener) { mCircleParams.circleListeners.createLottieListener = listener; return this; } /** * 确定按钮 * * @param text 按钮文本 * @param listener 事件 * @return this Builder */ public Builder setPositive(@NonNull String text, View.OnClickListener listener) { newPositiveParams(); ButtonParams params = mCircleParams.positiveParams; params.text = text; mCircleParams.circleListeners.clickPositiveListener = listener; return this; } /** * 设置是否禁用确定按钮 * * @param disable true禁用 * @return */ public Builder setPositiveDisable(@NonNull boolean disable) { newPositiveParams(); mCircleParams.positiveParams.disable = disable; return this; } /** * 配置确定按钮 * * @param configButton configButton * @return this Builder */ public Builder configPositive(@NonNull ConfigButton configButton) { newPositiveParams(); configButton.onConfig(mCircleParams.positiveParams); return this; } /** * 取消按钮 * * @param text 按钮文本 * @param listener 事件 * @return this Builder */ public Builder setNegative(@NonNull String text, View.OnClickListener listener) { newNegativeParams(); ButtonParams params = mCircleParams.negativeParams; params.text = text; mCircleParams.circleListeners.clickNegativeListener = listener; return this; } /** * 配置取消按钮 * * @param configButton configButton * @return this Builder */ public Builder configNegative(@NonNull ConfigButton configButton) { newNegativeParams(); configButton.onConfig(mCircleParams.negativeParams); return this; } /** * 中间按钮 * * @param text 按钮文本 * @param listener 事件 * @return this Builder */ public Builder setNeutral(@NonNull String text, View.OnClickListener listener) { newNeutralParams(); ButtonParams params = mCircleParams.neutralParams; params.text = text; mCircleParams.circleListeners.clickNeutralListener = listener; return this; } /** * 配置中间按钮 * * @param configButton configButton * @return this Builder */ public Builder configNeutral(@NonNull ConfigButton configButton) { newNeutralParams(); configButton.onConfig(mCircleParams.neutralParams); return this; } public Builder setOnCreateButtonListener(OnCreateButtonListener listener) { mCircleParams.circleListeners.createButtonListener = listener; return this; } public Builder setPopup(View anchorView, @PopupParams.TriangleGravity int triangleGravity) { newPopupParams(); PopupParams params = mCircleParams.popupParams; params.anchorView = anchorView; params.triangleGravity = triangleGravity; return this; } public Builder configPopup(@NonNull ConfigPopup configPopup) { newPopupParams(); configPopup.onConfig(mCircleParams.popupParams); return this; } /** * 设置 Popup 三角的大小 * * @param width dp * @param height dp * @return Builder */ public Builder setPopupTriangleSize(int width, int height) { newPopupParams(); mCircleParams.popupParams.triangleSize = new int[]{width, height}; return this; } /** * 显示三角 默认显示 * * @param show false隐藏 * @return Builder */ public Builder setPopupTriangleShow(boolean show) { newPopupParams(); mCircleParams.popupParams.triangleShow = show; return this; } public Builder setPopupItems(@NonNull Object items, OnRvItemClickListener listener) { newPopupParams(); mCircleParams.popupParams.items = items; mCircleParams.circleListeners.rvItemListener = listener; return this; } public Builder setPopupItems(@NonNull Object items, RecyclerView.LayoutManager layoutManager , OnRvItemClickListener listener) { newPopupParams(); PopupParams params = mCircleParams.popupParams; params.items = items; params.layoutManager = layoutManager; mCircleParams.circleListeners.rvItemListener = listener; return this; } public Builder setPopupItems(@NonNull RecyclerView.Adapter adapter, RecyclerView.LayoutManager layoutManager) { newPopupParams(); PopupParams params = mCircleParams.popupParams; params.layoutManager = layoutManager; params.adapterRv = adapter; return this; } public Builder setPopupItems(@NonNull RecyclerView.Adapter adapter, RecyclerView.LayoutManager layoutManager , RecyclerView.ItemDecoration itemDecoration) { newPopupParams(); PopupParams params = mCircleParams.popupParams; params.layoutManager = layoutManager; params.itemDecoration = itemDecoration; params.adapterRv = adapter; return this; } public Builder setCloseResId(@DrawableRes int closeResId) { setCloseResId(closeResId, 0); return this; } /** * 设置关闭按钮图标资源文件id和大小 * * @param closeResId 资源文件resId * @param closeSize 大小 dp * @return Builder */ public Builder setCloseResId(@DrawableRes int closeResId, int closeSize) { newCloseParams(); mCircleParams.closeParams.closeResId = closeResId; mCircleParams.closeParams.closeSize = closeSize; return this; } /** * 设置关闭图标内间距 * * @param closePadding left, top, right, bottom * @return Builder */ public Builder setClosePadding(int[] closePadding) { newCloseParams(); mCircleParams.closeParams.closePadding = closePadding; return this; } public Builder setCloseGravity(@CloseParams.CloseGravity int closeGravity) { newCloseParams(); mCircleParams.closeParams.closeGravity = closeGravity; return this; } /** * 连接线的宽高度,只有大于0才显示,默认是0 * * @param width dp * @param height dp * @return Builder */ public Builder setCloseConnector(int width, int height) { newCloseParams(); mCircleParams.closeParams.connectorWidth = width; mCircleParams.closeParams.connectorHeight = height; return this; } /** * 连接线的宽高度,只有大于0才显示,默认是0 * * @param width width * @param height height * @param color 线的颜色值 rgb * @return Builder */ public Builder setCloseConnector(int width, int height, int color) { newCloseParams(); mCircleParams.closeParams.connectorWidth = width; mCircleParams.closeParams.connectorHeight = height; mCircleParams.closeParams.connectorColor = color; return this; } public Builder setAdResId(@DrawableRes int resId, OnAdItemClickListener listener) { newAdParams(); return setAdResId(new int[]{resId}, listener); } public Builder setAdResId(@DrawableRes int[] resIds, OnAdItemClickListener listener) { newAdParams(); mCircleParams.adParams.resIds = resIds; mCircleParams.circleListeners.adItemClickListener = listener; return this; } /** * 设置广告框的单个图片url * * @param url 广告图片url路径 * @param listener 图片的点击监听器 * @return Builder */ public Builder setAdUrl(String url, OnAdItemClickListener listener) { return setAdUrl(new String[]{url}, listener); } /** * 设置广告框的多图片url * * @param urls 广告图片url路径数组 * @param listener 图片的点击监听器 * @return Builder */ public Builder setAdUrl(String[] urls, OnAdItemClickListener listener) { newAdParams(); mCircleParams.adParams.urls = urls; mCircleParams.circleListeners.adItemClickListener = listener; return this; } public Builder setAdUrl(List urls, OnAdItemClickListener listener) { return setAdUrl(urls.toArray(new String[urls.size()]), listener); } /** * 广告框的指示器,内置样式,也可调用 {@link #setAdIndicatorPoint(int)}自定义 * * @param show true 显示 * @return Builder */ public Builder setAdIndicator(boolean show) { newAdParams(); mCircleParams.adParams.isShowIndicator = show; return this; } /** * 广告框指示器资源文件 * * @param resId resId * @return Builder */ public Builder setAdIndicatorPoint(@DrawableRes int resId) { newAdParams(); mCircleParams.adParams.pointDrawableResId = resId; return this; } /** * @param imageLoadEngine ImageLoadEngine * @return Builder * @deprecated {{@link #setAdPageChangeListener(OnAdPageChangeListener)}} */ @Deprecated public Builder setImageLoadEngine(ImageLoadEngine imageLoadEngine) { mCircleParams.imageLoadEngine = imageLoadEngine; return this; } public Builder setAdPageChangeListener(OnAdPageChangeListener listener) { mCircleParams.circleListeners.adPageChangeListener = listener; return this; } public Builder setTypeface(Typeface typeface) { mCircleParams.dialogParams.typeface = typeface; return this; } public BaseCircleDialog show(FragmentManager manager) { BaseCircleDialog dialogFragment = create(); mCircleDialog.show(manager); return dialogFragment; } public BaseCircleDialog create() { if (mCircleDialog == null) { mCircleDialog = new CircleDialog(); } return mCircleDialog.create(mCircleParams); } public void refresh() { if (mCircleDialog != null) { mCircleDialog.refresh(); } } public void dismiss() { if (mCircleDialog != null) { mCircleDialog.dismiss(); } } private void newTitleParams() { if (mCircleParams.titleParams == null) mCircleParams.titleParams = new TitleParams(); } private void newSubTitleParams() { if (mCircleParams.subTitleParams == null) mCircleParams.subTitleParams = new SubTitleParams(); } private void newTextParams() { if (mCircleParams.textParams == null) { mCircleParams.textParams = new TextParams(); } } private void newItemsParams() { if (mCircleParams.itemsParams == null) { mCircleParams.itemsParams = new ItemsParams(); } } private void newProgressParams() { if (mCircleParams.progressParams == null) { mCircleParams.progressParams = new ProgressParams(); } } private void newInputParams() { if (mCircleParams.inputParams == null) { mCircleParams.inputParams = new InputParams(); } } private void newPositiveParams() { if (mCircleParams.positiveParams == null) mCircleParams.positiveParams = new ButtonParams(); } private void newLottieParams() { if (mCircleParams.lottieParams == null) { mCircleParams.lottieParams = new LottieParams(); } } private void newNegativeParams() { if (mCircleParams.negativeParams == null) { mCircleParams.negativeParams = new ButtonParams(); mCircleParams.negativeParams.textColor = CircleColor.FOOTER_BUTTON_TEXT_NEGATIVE; } } private void newNeutralParams() { if (mCircleParams.neutralParams == null) mCircleParams.neutralParams = new ButtonParams(); } private void newPopupParams() { if (mCircleParams.popupParams == null) { mCircleParams.popupParams = new PopupParams(); } } private void newCloseParams() { if (mCircleParams.closeParams == null) { mCircleParams.closeParams = new CloseParams(); } } private void newAdParams() { if (mCircleParams.adParams == null) { mCircleParams.adParams = new AdParams(); } } } }