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();
}
}
}
}