From b3c1e057398a348999cf2e3cbf5e508a844cf3fc Mon Sep 17 00:00:00 2001 From: wushaocheng <15876365887@163.com> Date: Wed, 9 Nov 2022 20:59:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E6=97=B6=E9=97=B4=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E5=99=A8=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hall/activity/ClanIncomeActivity.java | 7 +- .../view/dialog/TimePickerClanDialog.java | 447 ++++++++++++++++++ .../hall/view/dialog/TimePickerDialog.java | 36 +- .../res/layout/dialog_clan_time_picker.xml | 194 ++++++++ .../res/layout/dialog_custom_time_picker.xml | 95 +--- 5 files changed, 650 insertions(+), 129 deletions(-) create mode 100644 app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/view/dialog/TimePickerClanDialog.java create mode 100644 app/src/module_labour_union/res/layout/dialog_clan_time_picker.xml diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ClanIncomeActivity.java b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ClanIncomeActivity.java index c8635b3fe..0512360c1 100644 --- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ClanIncomeActivity.java +++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/activity/ClanIncomeActivity.java @@ -14,6 +14,7 @@ import com.jzxiang.pickerview.data.Type; import com.netease.nim.uikit.StatusBarUtil; import com.yizhuan.erban.R; import com.yizhuan.erban.base.BaseMvpActivity; +import com.yizhuan.erban.module_hall.hall.view.dialog.TimePickerClanDialog; import com.yizhuan.erban.module_hall.hall.view.dialog.TimePickerDialog; import com.yizhuan.erban.module_hall.hall.view.indicator.StatisticsIndicatorAdapter; import com.yizhuan.erban.module_hall.income.ClanIncomeFragment; @@ -45,7 +46,7 @@ import butterknife.OnClick; @CreatePresenter(ClanIncomePresenter.class) public class ClanIncomeActivity extends BaseMvpActivity - implements IIncomeStatisticsView, TimePickerDialog.TimePickerListener, ClanIncomeFragment.DayIncomeFragmentListener { + implements IIncomeStatisticsView, TimePickerClanDialog.TimePickerListener, ClanIncomeFragment.DayIncomeFragmentListener { private static final int TYPE_DAY = 0; private static final int TYPE_WEEK = 1; @@ -186,7 +187,7 @@ public class ClanIncomeActivity extends BaseMvpActivity { + tvWeekFirstDay.setSelected(true); + tvWeekLastDay.setSelected(false); + }); + tvWeekLastDay.setOnClickListener(v -> { + tvWeekFirstDay.setSelected(false); + tvWeekLastDay.setSelected(true); + }); + } + title.setText(mPickerConfig.mTitleString); + title.setTextColor(context.getResources().getColor(R.color.color_333333)); + cancel.setText(mPickerConfig.mCancelString); + sure.setText(mPickerConfig.mSureString); + + if (isMonth) { + mPickerConfig.mType = Type.YEAR_MONTH; + } + toolbar.setBackgroundResource(R.drawable.shape_white_top_18dp); + + mTimeWheel = new TimeWheel(view, mPickerConfig); + Calendar currCalendar = Calendar.getInstance(); + if (mFirstMs <= 0) { + mFirstMs = System.currentTimeMillis(); + } + currCalendar.setTimeInMillis(mFirstMs); + setWeekView(currCalendar); + Calendar calendar = Calendar.getInstance(); + mTimeWheel.setOnTimeChangeListener(() -> { + int year = mTimeWheel.getCurrentYear(); + int month = mTimeWheel.getCurrentMonth(); + int day = mTimeWheel.getCurrentDay(); + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month - 1); + calendar.set(Calendar.DAY_OF_MONTH, day); + setWeekView(calendar); + }); + + return view; + } + + private void setWeekView(Calendar calendar) { + long firstDayTime; + + if (isDay) { + if (tvWeekFirstDay.isSelected()) { + mDayFirstTime = calendar.getTimeInMillis(); + tvWeekFirstDay.setText(TimeUtils.getDateTimeString(mDayFirstTime, TimeUtils.DATE_FORMAT)); + } else { + mDayLastTime = calendar.getTimeInMillis(); + tvWeekLastDay.setText(TimeUtils.getDateTimeString(mDayLastTime, TimeUtils.DATE_FORMAT)); + } + } else { + //获取周几 1-7 + int currweekDay = calendar.get(Calendar.DAY_OF_WEEK); + if (currweekDay == 1) {//周日 + firstDayTime = calendar.getTimeInMillis() - (TimeUtils.MILLIS_OF_A_DAY * (7 - currweekDay)); + } else { + firstDayTime = calendar.getTimeInMillis() - (TimeUtils.MILLIS_OF_A_DAY * (currweekDay - 2)); + } + + String first = TimeUtils.getDateTimeString(firstDayTime, TimeUtils.DATE_FORMAT); + mWeekFirstDay = first; + tvWeekFirstDay.setText(first); + + //周日 + long lastDayTime = firstDayTime + (TimeUtils.MILLIS_OF_A_DAY * 6); + String last = TimeUtils.getDateTimeString(lastDayTime, TimeUtils.DATE_FORMAT); + mWeekLastDay = last; + tvWeekLastDay.setText(last); + } + } + + @Override + public void onClick(View v) { + int i = v.getId(); + if (i == R.id.tv_cancel) { + dismiss(); + } else if (i == R.id.tv_sure) { + sureClicked(); + }else if(i == R.id.tvDay) { + tvDay.setSelected(true); + tvWeek.setSelected(false); + tvMonth.setSelected(false); + mCurrentType = TYPE_DAY; + + }else if(i == R.id.tvWeek) { + tvDay.setSelected(false); + tvWeek.setSelected(true); + tvMonth.setSelected(false); + mCurrentType = TYPE_WEEK; + + }else if(i == R.id.tvMonth) { + tvDay.setSelected(false); + tvWeek.setSelected(false); + tvMonth.setSelected(true); + mCurrentType = TYPE_MONTH; + } + } + + /* + * @desc This method returns the current milliseconds. If current milliseconds is not set, + * this will return the system milliseconds. + * @param none + * @return long - the current milliseconds. + */ + public long getCurrentMillSeconds() { + if (mCurrentMillSeconds == 0) + return System.currentTimeMillis(); + + return mCurrentMillSeconds; + } + + /* + * @desc This method is called when onClick method is invoked by sure button. A Calendar instance is created and + * initialized. + * @param none + * @return none + */ + void sureClicked() { + Calendar calendar = Calendar.getInstance(); + calendar.clear(); + + calendar.set(Calendar.YEAR, mTimeWheel.getCurrentYear()); + calendar.set(Calendar.MONTH, mTimeWheel.getCurrentMonth() - 1); + calendar.set(Calendar.DAY_OF_MONTH, mTimeWheel.getCurrentDay()); + calendar.set(Calendar.HOUR_OF_DAY, mTimeWheel.getCurrentHour()); + calendar.set(Calendar.MINUTE, mTimeWheel.getCurrentMinute()); + + mCurrentMillSeconds = calendar.getTimeInMillis(); + + if (mTimePickerListener != null) { + if (isDay) { + if (defDayEndText.equals(tvWeekLastDay.getText().toString())) { + mDayLastTime = mDayFirstTime; + } + if (mDayFirstTime > mDayLastTime) { + SingleToastUtil.showToast(ResUtil.getString(R.string.view_dialog_timepickerdialog_02)); + return; + } + if (mDayLastTime - mDayFirstTime > 180 * TimeUtils.MILLIS_OF_A_DAY) { + SingleToastUtil.showToast(ResUtil.getString(R.string.view_dialog_timepickerdialog_03)); + return; + } + mTimePickerListener.getTime(mCurrentMillSeconds, + TimeUtils.getDateTimeString(mDayFirstTime, TimeUtils.DATE_FORMAT), + TimeUtils.getDateTimeString(mDayLastTime, TimeUtils.DATE_FORMAT)); + + } else { + mTimePickerListener.getTime(mCurrentMillSeconds, mWeekFirstDay, mWeekLastDay); + } + } + + dismiss(); + } + + public interface TimePickerListener { + void getTime(long chooseTime, String weekFirstDay, String weekLastDay); + } + + public static class Builder { + PickerConfig mPickerConfig; + long firstMs; + boolean mIsWeek; + boolean isMonth; + boolean isDay; + private long mDayFirstTime; + private long mDayLastTime; + + public Builder() { + mPickerConfig = new PickerConfig(); + } + + public Builder setType(Type type) { + mPickerConfig.mType = type; + return this; + } + + public Builder setThemeColor(int color) { + mPickerConfig.mThemeColor = color; + return this; + } + + public Builder setCancelStringId(String left) { + mPickerConfig.mCancelString = left; + return this; + } + + public Builder setSureStringId(String right) { + mPickerConfig.mSureString = right; + return this; + } + + public Builder setTitleStringId(String title) { + mPickerConfig.mTitleString = title; + return this; + } + + public Builder setToolBarTextColor(int color) { + mPickerConfig.mToolBarTVColor = color; + return this; + } + + public Builder setWheelItemTextNormalColor(int color) { + mPickerConfig.mWheelTVNormalColor = color; + return this; + } + + public Builder setWheelItemTextSelectorColor(int color) { + mPickerConfig.mWheelTVSelectorColor = color; + return this; + } + + public Builder setWheelItemTextSize(int size) { + mPickerConfig.mWheelTVSize = size; + return this; + } + + public Builder setCyclic(boolean cyclic) { + mPickerConfig.cyclic = cyclic; + return this; + } + + public Builder setMinMillseconds(long millseconds) { + mPickerConfig.mMinCalendar = new WheelCalendar(millseconds); + return this; + } + + public Builder setMaxMillseconds(long millseconds) { + mPickerConfig.mMaxCalendar = new WheelCalendar(millseconds); + return this; + } + + public Builder setCurrentMillseconds(long millseconds) { + firstMs = millseconds; + mPickerConfig.mCurrentCalendar = new WheelCalendar(millseconds); + return this; + } + + public Builder setYearText(String year) { + mPickerConfig.mYear = year; + return this; + } + + public Builder setMonthText(String month) { + mPickerConfig.mMonth = month; + return this; + } + + public Builder setDayText(String day) { + mPickerConfig.mDay = day; + return this; + } + + public Builder setHourText(String hour) { + mPickerConfig.mHour = hour; + return this; + } + + public Builder setMinuteText(String minute) { + mPickerConfig.mMinute = minute; + return this; + } + + public Builder setCallBack(OnDateSetListener listener) { + mPickerConfig.mCallBack = listener; + return this; + } + + public Builder setmIsWeek(boolean isWeek) { + mIsWeek = isWeek; + return this; + } + + public Builder setIsMonth(boolean isMonth) { + this.isMonth = isMonth; + return this; + } + + public Builder setIsDay(boolean isDay) { + this.isDay = isDay; + return this; + } + + public Builder setDayFirstTime(long dayFirstTime) { + this.mDayFirstTime = dayFirstTime; + return this; + } + + public Builder setDayLastTime(long dayLastTime) { + this.mDayLastTime = dayLastTime; + return this; + } + + public TimePickerClanDialog build() { + return newInstance(mPickerConfig, firstMs, mIsWeek, isMonth, isDay, mDayFirstTime, mDayLastTime); + } + + } + + +} diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/view/dialog/TimePickerDialog.java b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/view/dialog/TimePickerDialog.java index fb944a1b3..f8fc9bb27 100644 --- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/view/dialog/TimePickerDialog.java +++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/hall/view/dialog/TimePickerDialog.java @@ -22,11 +22,9 @@ import com.jzxiang.pickerview.data.Type; import com.jzxiang.pickerview.data.WheelCalendar; import com.jzxiang.pickerview.listener.OnDateSetListener; import com.yizhuan.erban.R; -import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil; import com.yizhuan.xchat_android_library.utils.ResUtil; import com.yizhuan.xchat_android_library.utils.SingleToastUtil; import com.yizhuan.xchat_android_library.utils.TimeUtils; -import com.yizhuan.xchat_android_library.utils.UIUtils; import java.util.Calendar; @@ -38,9 +36,6 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList RelativeLayout rlWeekGroup; TextView tvWeekFirstDay; TextView tvWeekLastDay; - TextView tvDay; - TextView tvWeek; - TextView tvMonth; private TimeWheel mTimeWheel; private long mCurrentMillSeconds; private long mFirstMs; @@ -113,10 +108,10 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList Context context = view.getContext(); TextView cancel = view.findViewById(R.id.tv_cancel); cancel.setOnClickListener(this); - cancel.setTextColor(context.getResources().getColor(R.color.color_b3b3b3)); + cancel.setTextColor(context.getResources().getColor(R.color.color_999999)); TextView sure = view.findViewById(R.id.tv_sure); sure.setOnClickListener(this); - sure.setTextColor(context.getResources().getColor(R.color.color_1F1A4E)); + sure.setTextColor(context.getResources().getColor(R.color.app_248cfe)); TextView title = view.findViewById(R.id.tv_title); View toolbar = view.findViewById(R.id.toolbar); @@ -127,14 +122,6 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList tvWeekLastDay.setSelected(mIsWeek); rlWeekGroup.setVisibility(mIsWeek || isDay ? View.VISIBLE : View.GONE); - tvDay = view.findViewById(R.id.tvDay); - tvWeek = view.findViewById(R.id.tvWeek); - tvMonth = view.findViewById(R.id.tvMonth); - tvDay.setOnClickListener(this); - tvWeek.setOnClickListener(this); - tvMonth.setOnClickListener(this); - tvDay.setSelected(true); - if (isDay) { if (mDayFirstTime != mDayLastTime) { tvWeekLastDay.setText(TimeUtils.getDateTimeString(mDayLastTime, TimeUtils.DATE_FORMAT)); @@ -158,7 +145,7 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList if (isMonth) { mPickerConfig.mType = Type.YEAR_MONTH; } - toolbar.setBackgroundResource(R.drawable.shape_white_top_18dp); + toolbar.setBackgroundColor(context.getResources().getColor(R.color.white)); mTimeWheel = new TimeWheel(view, mPickerConfig); Calendar currCalendar = Calendar.getInstance(); @@ -220,23 +207,6 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList dismiss(); } else if (i == R.id.tv_sure) { sureClicked(); - }else if(i == R.id.tvDay) { - tvDay.setSelected(true); - tvWeek.setSelected(false); - tvMonth.setSelected(false); - isDay = true; - - }else if(i == R.id.tvWeek) { - tvDay.setSelected(false); - tvWeek.setSelected(true); - tvMonth.setSelected(false); - mIsWeek = true; - - }else if(i == R.id.tvMonth) { - tvDay.setSelected(false); - tvWeek.setSelected(false); - tvMonth.setSelected(true); - isMonth = true; } } diff --git a/app/src/module_labour_union/res/layout/dialog_clan_time_picker.xml b/app/src/module_labour_union/res/layout/dialog_clan_time_picker.xml new file mode 100644 index 000000000..0721fde85 --- /dev/null +++ b/app/src/module_labour_union/res/layout/dialog_clan_time_picker.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/module_labour_union/res/layout/dialog_custom_time_picker.xml b/app/src/module_labour_union/res/layout/dialog_custom_time_picker.xml index 0721fde85..17de07ea7 100644 --- a/app/src/module_labour_union/res/layout/dialog_custom_time_picker.xml +++ b/app/src/module_labour_union/res/layout/dialog_custom_time_picker.xml @@ -3,103 +3,12 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto" android:gravity="bottom" android:orientation="vertical"> - - - - - - - - - - - - - - - - - - - + layout="@layout/timepicker_toolbar" />