diff --git a/entry/src/main/java/com/kunzisoft/switchdatetimesample/slice/MainAbilitySlice.java b/entry/src/main/java/com/kunzisoft/switchdatetimesample/slice/MainAbilitySlice.java index 6a718ef10a4edd201f14d5fea651c2b29bf8a281..586ea64879a8b90e10b7157262b2059c440e1085 100644 --- a/entry/src/main/java/com/kunzisoft/switchdatetimesample/slice/MainAbilitySlice.java +++ b/entry/src/main/java/com/kunzisoft/switchdatetimesample/slice/MainAbilitySlice.java @@ -16,6 +16,7 @@ package com.kunzisoft.switchdatetimesample.slice; import com.kunzisoft.switchdatetime.SwitchDateTimeDialogFragment; +import com.kunzisoft.switchdatetime.event.MessageEvent; import com.kunzisoft.switchdatetimesample.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; @@ -118,12 +119,15 @@ public class MainAbilitySlice extends AbilitySlice { buttonView.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component view) { - if (mTimeDataSave != null){ + if (mTimeDataSave != null) { mTimeDataSave.putInt("positionView", 1); } - + MessageEvent.selsectYearInt = 2017; + MessageEvent.selsectMonthInt = Calendar.MARCH; + MessageEvent.selsectDayInt = 4; // Re-init each time dateTimeFragment.startAtCalendarView(); + dateTimeFragment.setOriginalData(2015, 0); dateTimeFragment.setDefaultDateTime(new GregorianCalendar(2017, Calendar.MARCH, 4, 15, 20).getTime()); dateTimeFragment.show(); } @@ -163,12 +167,13 @@ public class MainAbilitySlice extends AbilitySlice { if (s) { // 重新show dialog System.out.println("-->>onOrientationChanged = " + mTimeDataSave.getInt("month", 2)); - dateTimeFragment.setDefaultDateTime(new GregorianCalendar( + Date date = new GregorianCalendar( mTimeDataSave.getInt("year", 2017), - mTimeDataSave.getInt("month", 2), + mTimeDataSave.getInt("month", Calendar.MARCH), mTimeDataSave.getInt("day", 4), mTimeDataSave.getInt("hour", 15), - mTimeDataSave.getInt("minute", 20)).getTime()); + mTimeDataSave.getInt("minute", 20)).getTime(); + dateTimeFragment.setDefaultDateTime(date); dateTimeFragment.show(); } } diff --git a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java index fd360c2b1a0b59b76b4797c229f2cd5fc7265c04..cde69e96dd1d98e0cb157abb38b2906bbea8564a 100644 --- a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java +++ b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/SwitchDateTimeDialogFragment.java @@ -85,7 +85,7 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { private Text text_month; private Calendar calendar = Calendar.getInstance(); private static final String[] MONTH_NAME = DateFormatSymbols.getInstance().getMonths(); - private int original_year = 2016; + private int original_year = 2015; private int original_month = 2; private int original_day = 1; private Component dateTimeLayout; @@ -318,8 +318,9 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { // Init simple date format if null if (dayAndMonthSimpleDate == null) dayAndMonthSimpleDate = new SimpleDateFormat("MMMM dd", Locale.getDefault()); - if (yearSimpleDate == null) + if (yearSimpleDate == null) { yearSimpleDate = new SimpleDateFormat("yyyy", Locale.getDefault()); + } dayAndMonthSimpleDate.setTimeZone(timeZone); yearSimpleDate.setTimeZone(timeZone); @@ -362,9 +363,16 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { listPickerYearView.setDatePickerListener(new OnYearSelectedListener() { @Override public void onYearSelected(Component view, int yearPicker) { + MessageEvent.selsectYearInt = yearPicker; dateTimeCalendar.set(Calendar.YEAR, yearPicker); yearHeaderValues.setText(yearSimpleDate.format(dateTimeCalendar.getTime())); - original_year = yearPicker - 1; + + if (pageSlider != null) { + int offset = pageSlider.getCurrentPage(); + int yearOffset = (yearPicker - MessageEvent.yearInt) * 12; + pageSlider.setCurrentPage(offset + yearOffset); + } + setMonth(); } }); @@ -458,14 +466,18 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { } }); - Calendar calendar = Calendar.getInstance(); - int current_year = calendar.get(Calendar.YEAR); - int current_month = calendar.get(Calendar.MONTH); - int diff_year = current_year - original_year; - int diff_month = current_month - original_month; - int offset = diff_year * 12 + diff_month; - pageSlider.setCurrentPage(12); - setMonth(); + if (mTimeDataSave != null) { + int current_year = mTimeDataSave.getInt("year", 2017); + int current_month = mTimeDataSave.getInt("month", 0); + int diff_year = current_year - original_year; + int diff_month = current_month - original_month; + int offset = diff_year * 12 + diff_month; + pageSlider.setCurrentPage(offset); + setMonth(); + } else { + pageSlider.setCurrentPage(26); + setMonth(); + } } private List initViews(Calendar original_calendar) { @@ -500,7 +512,6 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { int year = original_year; int month = original_month + pageSlider.getCurrentPage(); - System.out.println("-->>setMonth = " + original_month + "--" + pageSlider.getCurrentPage()); if (month > 11) { int times = month / 12; year = year + times; @@ -656,7 +667,6 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { } switch (MessageEvent.month.trim()) { - case "一月": dateTimeCalendar.set(Calendar.MONTH, 0); break; @@ -689,7 +699,6 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { break; case "十一月": dateTimeCalendar.set(Calendar.MONTH, 10); - break; case "十二月": dateTimeCalendar.set(Calendar.MONTH, 11); @@ -908,8 +917,12 @@ public class SwitchDateTimeDialogFragment extends CommonDialog { mTimeDataSave.putInt("hour", dateTimeCalendar.get(Calendar.HOUR_OF_DAY)); mTimeDataSave.putInt("minute", dateTimeCalendar.get(Calendar.MINUTE)); } - original_month = dateTimeCalendar.get(Calendar.MONTH); - original_year = dateTimeCalendar.get(Calendar.YEAR) - 1; + System.out.println("-->>setMonth1 = " + original_year); + } + + public void setOriginalData(int year, int month) { + original_year = year; + original_month = month; } /** diff --git a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/date/CalendarManager.java b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/date/CalendarManager.java index f372472fcfc17cef9ea7e590bd005a2e678c64a2..bc0b49600bf683f2a705c6408a2dd46c8279580f 100644 --- a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/date/CalendarManager.java +++ b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/date/CalendarManager.java @@ -82,7 +82,7 @@ public class CalendarManager { Text text = mTexts.get(i); text.setText(day + ""); - if (year == MessageEvent.yearInt && month == MessageEvent.monthInt && day == MessageEvent.dayInt){ + if (year == MessageEvent.selsectYearInt && month == MessageEvent.selsectMonthInt && day == MessageEvent.selsectDayInt) { text.setTextColor(Color.WHITE); setTxtBg(text); } else { @@ -97,15 +97,29 @@ public class CalendarManager { } text.setClickedListener(component -> { + clearState(); Text contentTxt = (Text) component; contentTxt.setTextColor(Color.WHITE); setTxtBg(contentTxt); - + MessageEvent.selsectYearInt = MessageEvent.yearInt; + MessageEvent.selsectMonthInt = MessageEvent.monthInt; + MessageEvent.selsectDayInt = Integer.parseInt(contentTxt.getText()); EventBus.getDefault().post(new MessageEvent(contentTxt.getText())); }); } } + private void clearState() { + for (int i = 0; i < 42; i++) { + Text text = mTexts.get(i); + Color color = text.getTextColor(); + if (color.getValue() == Color.WHITE.getValue()) { + text.setTextColor(Color.BLACK); + } + text.setBackground(null); + } + } + private void setTxtBg(Text text) { try { //获取Media文件夹中的图片资源 diff --git a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/event/MessageEvent.java b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/event/MessageEvent.java index 4362002cb941d59efbea1d2672f560b749229fd3..e659a1d71d26dc7750a340a95d4b498c117d4e1d 100644 --- a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/event/MessageEvent.java +++ b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/event/MessageEvent.java @@ -24,6 +24,10 @@ public class MessageEvent { public static int yearInt = -1; public static int dayInt = -1; + public static int selsectMonthInt = -1; + public static int selsectYearInt = -1; + public static int selsectDayInt = -1; + /** * 构造方法 * diff --git a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java index 35911771ec2af678fa13941f5fff19fc1fd32d37..dbcb66fdc4e2ec5b82daa60c2ee12934b390419c 100644 --- a/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java +++ b/switchdatetime/src/main/java/com/kunzisoft/switchdatetime/provider/PageProvider.java @@ -87,7 +87,6 @@ public class PageProvider extends PageSliderProvider { month = month - 12 * times; } calendar.set(year, month, day); - System.out.println(); return calendar; } }