package com.bigkoo.pickerview.builder; import android.content.Context; import android.view.View; import android.view.ViewGroup; import androidx.annotation.ColorInt; import com.bigkoo.pickerview.configure.PickerOptions; import com.bigkoo.pickerview.listener.CustomListener; import com.bigkoo.pickerview.listener.OnTimeSelectChangeListener; import com.bigkoo.pickerview.listener.OnTimeSelectListener; import com.bigkoo.pickerview.view.TimePickerView; import com.contrarywind.view.WheelView; import java.util.Calendar; /** * Created by xiaosongzeem on 2018/3/20. */ public class TimePickerBuilder { private PickerOptions mPickerOptions; //Required public TimePickerBuilder(Context context, OnTimeSelectListener listener) { mPickerOptions = new PickerOptions(PickerOptions.TYPE_PICKER_TIME); mPickerOptions.context = context; mPickerOptions.timeSelectListener = listener; } //Option public TimePickerBuilder setGravity(int gravity) { mPickerOptions.textGravity = gravity; return this; } public TimePickerBuilder addOnCancelClickListener(View.OnClickListener cancelListener) { mPickerOptions.cancelListener = cancelListener; return this; } /** * new boolean[]{true, true, true, false, false, false} * control the "year","month","day","hours","minutes","seconds " display or hide. * 分别控制“年”“月”“日”“时”“分”“秒”的显示或隐藏。 * * @param type 布尔型数组,长度需要设置为6。 * @return TimePickerBuilder */ public TimePickerBuilder setType(boolean[] type) { mPickerOptions.type = type; return this; } public TimePickerBuilder setSubmitText(String textContentConfirm) { mPickerOptions.textContentConfirm = textContentConfirm; return this; } public TimePickerBuilder isDialog(boolean isDialog) { mPickerOptions.isDialog = isDialog; return this; } public TimePickerBuilder setCancelText(String textContentCancel) { mPickerOptions.textContentCancel = textContentCancel; return this; } public TimePickerBuilder setTitleText(String textContentTitle) { mPickerOptions.textContentTitle = textContentTitle; return this; } public TimePickerBuilder setSubmitColor(int textColorConfirm) { mPickerOptions.textColorConfirm = textColorConfirm; return this; } public TimePickerBuilder setCancelColor(int textColorCancel) { mPickerOptions.textColorCancel = textColorCancel; return this; } /** * ViewGroup 类型的容器 * * @param decorView 选择器会被添加到此容器中 * @return TimePickerBuilder */ public TimePickerBuilder setDecorView(ViewGroup decorView) { mPickerOptions.decorView = decorView; return this; } public TimePickerBuilder setBgColor(int bgColorWheel) { mPickerOptions.bgColorWheel = bgColorWheel; return this; } public TimePickerBuilder setTitleBgColor(int bgColorTitle) { mPickerOptions.bgColorTitle = bgColorTitle; return this; } public TimePickerBuilder setTitleColor(int textColorTitle) { mPickerOptions.textColorTitle = textColorTitle; return this; } public TimePickerBuilder setSubCalSize(int textSizeSubmitCancel) { mPickerOptions.textSizeSubmitCancel = textSizeSubmitCancel; return this; } public TimePickerBuilder setTitleSize(int textSizeTitle) { mPickerOptions.textSizeTitle = textSizeTitle; return this; } public TimePickerBuilder setContentTextSize(int textSizeContent) { mPickerOptions.textSizeContent = textSizeContent; return this; } /** * 设置最大可见数目 * * @param count suggest value: 3, 5, 7, 9 */ public TimePickerBuilder setItemVisibleCount(int count) { mPickerOptions.itemsVisibleCount = count; return this; } /** * 透明度是否渐变 * * @param isAlphaGradient true of false */ public TimePickerBuilder isAlphaGradient(boolean isAlphaGradient) { mPickerOptions.isAlphaGradient = isAlphaGradient; return this; } /** * 因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11 * * @param date * @return TimePickerBuilder */ public TimePickerBuilder setDate(Calendar date) { mPickerOptions.date = date; return this; } public TimePickerBuilder setLayoutRes(int res, CustomListener customListener) { mPickerOptions.layoutRes = res; mPickerOptions.customListener = customListener; return this; } /** * 设置起始时间 * 因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11 */ public TimePickerBuilder setRangDate(Calendar startDate, Calendar endDate) { mPickerOptions.startDate = startDate; mPickerOptions.endDate = endDate; return this; } /** * 设置间距倍数,但是只能在1.0-4.0f之间 * * @param lineSpacingMultiplier */ public TimePickerBuilder setLineSpacingMultiplier(float lineSpacingMultiplier) { mPickerOptions.lineSpacingMultiplier = lineSpacingMultiplier; return this; } /** * 设置分割线的颜色 * * @param dividerColor */ public TimePickerBuilder setDividerColor(@ColorInt int dividerColor) { mPickerOptions.dividerColor = dividerColor; return this; } /** * 设置分割线的类型 * * @param dividerType */ public TimePickerBuilder setDividerType(WheelView.DividerType dividerType) { mPickerOptions.dividerType = dividerType; return this; } /** * {@link #setOutSideColor} instead. * * @param backgroundId color resId. */ @Deprecated public TimePickerBuilder setBackgroundId(int backgroundId) { mPickerOptions.outSideColor = backgroundId; return this; } /** * 显示时的外部背景色颜色,默认是灰色 * * @param outSideColor */ public TimePickerBuilder setOutSideColor(@ColorInt int outSideColor) { mPickerOptions.outSideColor = outSideColor; return this; } /** * 设置分割线之间的文字的颜色 * * @param textColorCenter */ public TimePickerBuilder setTextColorCenter(@ColorInt int textColorCenter) { mPickerOptions.textColorCenter = textColorCenter; return this; } /** * 设置分割线以外文字的颜色 * * @param textColorOut */ public TimePickerBuilder setTextColorOut(@ColorInt int textColorOut) { mPickerOptions.textColorOut = textColorOut; return this; } public TimePickerBuilder isCyclic(boolean cyclic) { mPickerOptions.cyclic = cyclic; return this; } public TimePickerBuilder setOutSideCancelable(boolean cancelable) { mPickerOptions.cancelable = cancelable; return this; } public TimePickerBuilder setLunarCalendar(boolean lunarCalendar) { mPickerOptions.isLunarCalendar = lunarCalendar; return this; } public TimePickerBuilder setLabel(String label_year, String label_month, String label_day, String label_hours, String label_mins, String label_seconds) { mPickerOptions.label_year = label_year; mPickerOptions.label_month = label_month; mPickerOptions.label_day = label_day; mPickerOptions.label_hours = label_hours; mPickerOptions.label_minutes = label_mins; mPickerOptions.label_seconds = label_seconds; return this; } /** * 设置X轴倾斜角度[ -90 , 90°] * * @param x_offset_year 年 * @param x_offset_month 月 * @param x_offset_day 日 * @param x_offset_hours 时 * @param x_offset_minutes 分 * @param x_offset_seconds 秒 * @return */ public TimePickerBuilder setTextXOffset(int x_offset_year, int x_offset_month, int x_offset_day, int x_offset_hours, int x_offset_minutes, int x_offset_seconds) { mPickerOptions.x_offset_year = x_offset_year; mPickerOptions.x_offset_month = x_offset_month; mPickerOptions.x_offset_day = x_offset_day; mPickerOptions.x_offset_hours = x_offset_hours; mPickerOptions.x_offset_minutes = x_offset_minutes; mPickerOptions.x_offset_seconds = x_offset_seconds; return this; } public TimePickerBuilder isCenterLabel(boolean isCenterLabel) { mPickerOptions.isCenterLabel = isCenterLabel; return this; } /** * @param listener 切换item项滚动停止时,实时回调监听。 * @return */ public TimePickerBuilder setTimeSelectChangeListener(OnTimeSelectChangeListener listener) { mPickerOptions.timeSelectChangeListener = listener; return this; } public TimePickerView build() { return new TimePickerView(mPickerOptions); } }