From 4e8058f200c825a256ea3dc0308c0e567cbafcfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=B0=8F=E6=B1=9F?= <461355754@qq.com> Date: Tue, 20 Jan 2026 21:15:23 +0800 Subject: [PATCH] =?UTF-8?q?1:=E5=9C=A8=E6=88=BF=E9=97=B4=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E5=B1=95=E7=A4=BA=E8=90=A5?= =?UTF-8?q?=E4=B8=9A=E6=97=B6=E9=97=B4=202=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=97=B6=E9=97=B4=E5=B1=95=E7=A4=BA=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=9A=84=E6=97=A5=E6=9C=9F=203=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=86=E7=BE=A4=E7=BB=84=E5=85=A8=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E6=8E=A5=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xscm/moduleutil/bean/room/RoomBean.java | 3 + .../xscm/moduleutil/dialog/ConfirmDialog.java | 1 + .../widget/DoubleTimePickerBottomSheet.java | 429 +++++++++++++----- .../moduleutil/widget/WheelDatePicker.java | 34 +- .../moduleutil/widget/WheelTimePicker.java | 30 ++ .../res/layout/dialog_double_time_picker.xml | 24 + .../activity/GroupChatSettingsActivity.kt | 4 +- .../user/activity/CreatedRoomActivity.java | 3 + .../main/res/layout/activity_created_room.xml | 39 +- .../res/layout/activity_group_user_list.xml | 15 +- 10 files changed, 452 insertions(+), 130 deletions(-) diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomBean.java index 5b89de5a..26e45946 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomBean.java @@ -129,6 +129,9 @@ public class RoomBean implements Serializable { private int is_pk; //1:接收 2:不接受 private int last_pk_room_id;//记录上次pk的房间id + private String start_time="";//营业时间的开始时间 + private String end_time="";//营业时间的结束时间 + public int getSceneId() { if (sound_effect != null) { return sound_effect.getId(); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java b/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java index f9cd6c1b..a4a5e14c 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java @@ -80,6 +80,7 @@ public class ConfirmDialog extends Dialog { window.setGravity(Gravity.CENTER); // 居中显示 window.setBackgroundDrawableResource(R.drawable.bg_r16_fff); // 透明背景 } + setCanceledOnTouchOutside(false); // 设置点击外部不取消对话框 } @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/DoubleTimePickerBottomSheet.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/DoubleTimePickerBottomSheet.java index c112269d..3fb78432 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/DoubleTimePickerBottomSheet.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/DoubleTimePickerBottomSheet.java @@ -6,6 +6,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TabHost; +import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; @@ -14,16 +15,43 @@ import androidx.annotation.Nullable; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import com.xscm.moduleutil.R; +import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; +import java.util.Locale; -public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { +public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { private OnTimeRangeSelectedListener listener; private boolean showTime = true; // 默认显示时分秒 private boolean showDate = true; // 默认显示日期 private boolean showSeconds = true; // 默认显示秒 + // 格式模板 + private static final String DATE_FORMAT = "yyyy-MM-dd"; + private static final String TIME_FORMAT_SECONDS = "HH:mm:ss"; + private static final String TIME_FORMAT_NO_SECONDS = "HH:mm"; + private static final String DATETIME_FORMAT_SECONDS = "yyyy-MM-dd HH:mm:ss"; + private static final String DATETIME_FORMAT_NO_SECONDS = "yyyy-MM-dd HH:mm"; + + private SimpleDateFormat dateFormat; + private SimpleDateFormat timeFormat; + private SimpleDateFormat dateTimeFormat; + + // UI组件 + private TextView tvStartTime; + private TextView tvEndTime; + private TabHost tabHost; + private WheelDatePicker wheelStartDate; + private WheelTimePicker wheelStartTime; + private WheelDatePicker wheelEndDate; + private WheelTimePicker wheelEndTime; + + // 时间数据 + private Calendar startCalendar; + private Calendar endCalendar; + private View view; + public interface OnTimeRangeSelectedListener { void onTimeRangeSelected(Date startDate, Date endDate); } @@ -31,7 +59,7 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { public void setOnTimeRangeSelectedListener(OnTimeRangeSelectedListener listener) { this.listener = listener; } - + /** * 设置是否显示时分秒 * @param showTime true显示年月日时分秒,false只显示年月日 @@ -39,7 +67,7 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { public void setShowTime(boolean showTime) { this.showTime = showTime; } - + /** * 设置是否显示日期 * @param showDate true显示日期,false只显示时间 @@ -47,7 +75,7 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { public void setShowDate(boolean showDate) { this.showDate = showDate; } - + /** * 设置是否显示秒 * @param showSeconds true显示秒,false不显示秒 @@ -55,7 +83,7 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { public void setShowSeconds(boolean showSeconds) { this.showSeconds = showSeconds; } - + /** * 创建实例 * @param showTime true显示年月日时分秒,false只显示年月日 @@ -66,7 +94,7 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { fragment.setShowTime(showTime); return fragment; } - + /** * 创建实例 * @param showTime true显示年月日时分秒,false只显示年月日 @@ -86,140 +114,309 @@ public class DoubleTimePickerBottomSheet extends BottomSheetDialogFragment { return new CustomBottomSheetDialog(requireContext()); } + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // 初始化格式化工具 + initFormats(); + // 初始化时间数据 + initCalendars(); + } + + /** + * 初始化日期时间格式化工具 + */ + private void initFormats() { + dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.getDefault()); + + if (showSeconds) { + timeFormat = new SimpleDateFormat(TIME_FORMAT_SECONDS, Locale.getDefault()); + dateTimeFormat = new SimpleDateFormat(DATETIME_FORMAT_SECONDS, Locale.getDefault()); + } else { + timeFormat = new SimpleDateFormat(TIME_FORMAT_NO_SECONDS, Locale.getDefault()); + dateTimeFormat = new SimpleDateFormat(DATETIME_FORMAT_NO_SECONDS, Locale.getDefault()); + } + } + + /** + * 初始化时间数据 + */ + private void initCalendars() { + startCalendar = Calendar.getInstance(); + endCalendar = Calendar.getInstance(); + + // 设置默认结束时间略晚于开始时间 + if (showTime) { + endCalendar.add(Calendar.HOUR, 1); + } else { + endCalendar.add(Calendar.DAY_OF_MONTH, 1); + } + } + + /** + * 根据配置获取显示格式 + */ + private String getFormattedTime(Calendar calendar) { + if (showDate && showTime) { + return dateTimeFormat.format(calendar.getTime()); + } else if (showDate && !showTime) { + return dateFormat.format(calendar.getTime()); + } else if (!showDate && showTime) { + return timeFormat.format(calendar.getTime()); + } + return ""; + } + + /** + * 更新顶部TextView显示 + */ + private void updateDisplayText() { + if (tvStartTime != null) { + tvStartTime.setText(getFormattedTime(startCalendar)); + } + if (tvEndTime != null) { + tvEndTime.setText(getFormattedTime(endCalendar)); + } + } + @NonNull @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.dialog_double_time_picker, container, false); + view = inflater.inflate(R.layout.dialog_double_time_picker, container, false); - // 初始化 TabHost - TabHost tabHost = view.findViewById(R.id.tabHost); + initViews(view); + setupWheelPickers(); + setupTabHost(); + setupButtons(); + + return view; + } + + /** + * 初始化视图组件 + */ + private void initViews(View view) { + tvStartTime = view.findViewById(R.id.tv_start); + tvEndTime = view.findViewById(R.id.tv_end); + tabHost = view.findViewById(R.id.tabHost); + + wheelStartDate = view.findViewById(R.id.wheel_start_date); + wheelStartTime = view.findViewById(R.id.wheel_start_time); + wheelEndDate = view.findViewById(R.id.wheel_end_date); + wheelEndTime = view.findViewById(R.id.wheel_end_time); + + // 初始化显示文本 + updateDisplayText(); + } + + /** + * 设置滚轮选择器 + */ + private void setupWheelPickers() { + // 根据showDate和showTime参数控制日期和时间选择器的显示和布局 + adjustPickerVisibility(); + + // 初始化开始时间 + if (showDate) { + wheelStartDate.init(startCalendar.get(Calendar.YEAR), + startCalendar.get(Calendar.MONTH), + startCalendar.get(Calendar.DAY_OF_MONTH)); + wheelStartDate.setOnDateSelectedListener((year, month, day) -> { + startCalendar.set(year, month, day); + updateDisplayText(); + }); + } + + if (showTime) { + wheelStartTime.init(startCalendar.get(Calendar.HOUR_OF_DAY), + startCalendar.get(Calendar.MINUTE), + showSeconds ? startCalendar.get(Calendar.SECOND) : 0); + wheelStartTime.setShowSeconds(showSeconds); + wheelStartTime.setOnValueChangedListener(() -> { + startCalendar.set(Calendar.HOUR_OF_DAY, wheelStartTime.getHour()); + startCalendar.set(Calendar.MINUTE, wheelStartTime.getMinute()); + if (showSeconds) { + startCalendar.set(Calendar.SECOND, wheelStartTime.getSecond()); + } + updateDisplayText(); + }); + } + + // 初始化结束时间 + if (showDate) { + wheelEndDate.init(endCalendar.get(Calendar.YEAR), + endCalendar.get(Calendar.MONTH), + endCalendar.get(Calendar.DAY_OF_MONTH)); + wheelEndDate.setOnDateSelectedListener((year, month, day) -> { + endCalendar.set(year, month, day); + updateDisplayText(); + }); + } + + if (showTime) { + wheelEndTime.init(endCalendar.get(Calendar.HOUR_OF_DAY), + endCalendar.get(Calendar.MINUTE), + showSeconds ? endCalendar.get(Calendar.SECOND) : 0); + wheelEndTime.setShowSeconds(showSeconds); + wheelEndTime.setOnValueChangedListener(() -> { + endCalendar.set(Calendar.HOUR_OF_DAY, wheelEndTime.getHour()); + endCalendar.set(Calendar.MINUTE, wheelEndTime.getMinute()); + if (showSeconds) { + endCalendar.set(Calendar.SECOND, wheelEndTime.getSecond()); + } + updateDisplayText(); + }); + } + } + + /** + * 调整选择器显示状态和布局 + */ + private void adjustPickerVisibility() { + if (showDate && showTime) { + // 显示日期和时间时,使用默认布局 + setPickerVisibility(View.VISIBLE, View.VISIBLE, View.VISIBLE, View.VISIBLE); + resetPickerLayoutParams(wheelStartDate, wheelEndDate); + } else if (showDate && !showTime) { + // 只显示日期时,隐藏时间选择器并让日期选择器铺满宽度 + setPickerVisibility(View.VISIBLE, View.GONE, View.VISIBLE, View.GONE); + setPickerFullWidth(wheelStartDate, wheelEndDate); + } else if (!showDate && showTime) { + // 只显示时间时,隐藏日期选择器并让时间选择器铺满宽度 + setPickerVisibility(View.GONE, View.VISIBLE, View.GONE, View.VISIBLE); + setPickerFullWidth(wheelStartTime, wheelEndTime); + } + } + + private void setPickerVisibility(int startDateVis, int startTimeVis, + int endDateVis, int endTimeVis) { + wheelStartDate.setVisibility(startDateVis); + wheelStartTime.setVisibility(startTimeVis); + wheelEndDate.setVisibility(endDateVis); + wheelEndTime.setVisibility(endTimeVis); + } + + private void resetPickerLayoutParams(WheelDatePicker... pickers) { + for (WheelDatePicker picker : pickers) { + ViewGroup.LayoutParams params = picker.getLayoutParams(); + params.width = ViewGroup.LayoutParams.WRAP_CONTENT; + picker.setLayoutParams(params); + } + } + + private void setPickerFullWidth(View... views) { + for (View view : views) { + ViewGroup.LayoutParams params = view.getLayoutParams(); + params.width = ViewGroup.LayoutParams.MATCH_PARENT; + view.setLayoutParams(params); + } + } + + /** + * 设置TabHost + */ + private void setupTabHost() { tabHost.setup(); - tabHost.addTab(tabHost.newTabSpec("start").setIndicator("开始时间").setContent(R.id.start_time_tab)); tabHost.addTab(tabHost.newTabSpec("end").setIndicator("结束时间").setContent(R.id.end_time_tab)); - // 初始化 Wheel Views - WheelDatePicker wheelStartDate = view.findViewById(R.id.wheel_start_date); - WheelTimePicker wheelStartTime = view.findViewById(R.id.wheel_start_time); - WheelDatePicker wheelEndDate = view.findViewById(R.id.wheel_end_date); - WheelTimePicker wheelEndTime = view.findViewById(R.id.wheel_end_time); - - // 根据showDate和showTime参数控制日期和时间选择器的显示和布局 - if (showDate && showTime) { - // 显示日期和时间时,使用默认布局 - wheelStartDate.setVisibility(View.VISIBLE); - wheelStartTime.setVisibility(View.VISIBLE); - wheelEndDate.setVisibility(View.VISIBLE); - wheelEndTime.setVisibility(View.VISIBLE); - - // 重置日期选择器的布局参数为默认值 - ViewGroup.LayoutParams startDateParams = wheelStartDate.getLayoutParams(); - startDateParams.width = ViewGroup.LayoutParams.WRAP_CONTENT; - wheelStartDate.setLayoutParams(startDateParams); - - ViewGroup.LayoutParams endDateParams = wheelEndDate.getLayoutParams(); - endDateParams.width = ViewGroup.LayoutParams.WRAP_CONTENT; - wheelEndDate.setLayoutParams(endDateParams); - } else if (showDate && !showTime) { - // 只显示日期时,隐藏时间选择器并让日期选择器铺满宽度 - wheelStartTime.setVisibility(View.GONE); - wheelEndTime.setVisibility(View.GONE); - - // 设置日期选择器铺满宽度 - ViewGroup.LayoutParams startDateParams = wheelStartDate.getLayoutParams(); - startDateParams.width = ViewGroup.LayoutParams.MATCH_PARENT; - wheelStartDate.setLayoutParams(startDateParams); - - ViewGroup.LayoutParams endDateParams = wheelEndDate.getLayoutParams(); - endDateParams.width = ViewGroup.LayoutParams.MATCH_PARENT; - wheelEndDate.setLayoutParams(endDateParams); - } else if (!showDate && showTime) { - // 只显示时间时,隐藏日期选择器并让时间选择器铺满宽度 - wheelStartDate.setVisibility(View.GONE); - wheelStartTime.setVisibility(View.VISIBLE); - wheelEndDate.setVisibility(View.GONE); - wheelEndTime.setVisibility(View.VISIBLE); + tabHost.setOnTabChangedListener(tabId -> { + if ("start".equals(tabId)) { + restoreStartTimeSelection(); + } else if ("end".equals(tabId)) { + restoreEndTimeSelection(); + } + }); + } - // 设置时间选择器铺满宽度 - ViewGroup.LayoutParams startTimeParams = wheelStartTime.getLayoutParams(); - startTimeParams.width = ViewGroup.LayoutParams.MATCH_PARENT; - wheelStartTime.setLayoutParams(startTimeParams); - - ViewGroup.LayoutParams endTimeParams = wheelEndTime.getLayoutParams(); - endTimeParams.width = ViewGroup.LayoutParams.MATCH_PARENT; - wheelEndTime.setLayoutParams(endTimeParams); - } - - // 默认设置当前时间 - Calendar startCal = Calendar.getInstance(); + /** + * 恢复开始时间选择 + */ + private void restoreStartTimeSelection() { if (showDate) { - wheelStartDate.init(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH), startCal.get(Calendar.DAY_OF_MONTH)); + wheelStartDate.init(startCalendar.get(Calendar.YEAR), + startCalendar.get(Calendar.MONTH), + startCalendar.get(Calendar.DAY_OF_MONTH)); } if (showTime) { - wheelStartTime.init(startCal.get(Calendar.HOUR_OF_DAY), startCal.get(Calendar.MINUTE), showSeconds ? startCal.get(Calendar.SECOND) : 0); - wheelStartTime.setShowSeconds(showSeconds); + wheelStartTime.init(startCalendar.get(Calendar.HOUR_OF_DAY), + startCalendar.get(Calendar.MINUTE), + showSeconds ? startCalendar.get(Calendar.SECOND) : 0); } + } - // 设置默认结束时间略晚于开始时间 - Calendar endCal = (Calendar) startCal.clone(); - if (showTime) { - endCal.add(Calendar.HOUR, 1); - } else { - endCal.add(Calendar.DAY_OF_MONTH, 1); - } + /** + * 恢复结束时间选择 + */ + private void restoreEndTimeSelection() { if (showDate) { - wheelEndDate.init(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH), endCal.get(Calendar.DAY_OF_MONTH)); + wheelEndDate.init(endCalendar.get(Calendar.YEAR), + endCalendar.get(Calendar.MONTH), + endCalendar.get(Calendar.DAY_OF_MONTH)); } if (showTime) { - wheelEndTime.init(endCal.get(Calendar.HOUR_OF_DAY), endCal.get(Calendar.MINUTE), showSeconds ? endCal.get(Calendar.SECOND) : 0); - wheelEndTime.setShowSeconds(showSeconds); + wheelEndTime.init(endCalendar.get(Calendar.HOUR_OF_DAY), + endCalendar.get(Calendar.MINUTE), + showSeconds ? endCalendar.get(Calendar.SECOND) : 0); } + } + /** + * 设置按钮事件 + */ + private void setupButtons() { // 取消按钮 view.findViewById(R.id.btn_cancel).setOnClickListener(v -> dismiss()); // 确定按钮 view.findViewById(R.id.btn_sure).setOnClickListener(v -> { - Calendar start = Calendar.getInstance(); - Calendar end = Calendar.getInstance(); - - if (showDate && showTime) { - // 显示日期和时间 - start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(), - wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond()); - end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(), - wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond()); - } else if (showDate && !showTime) { - // 只显示日期 - start.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay(), - 0, 0, 0); - end.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay(), - 23, 59, 59); - } else if (!showDate && showTime) { - // 只显示时间,使用当前日期 - int currentYear = start.get(Calendar.YEAR); - int currentMonth = start.get(Calendar.MONTH); - int currentDay = start.get(Calendar.DAY_OF_MONTH); - - start.set(currentYear, currentMonth, currentDay, - wheelStartTime.getHour(), wheelStartTime.getMinute(), wheelStartTime.getSecond()); - end.set(currentYear, currentMonth, currentDay, - wheelEndTime.getHour(), wheelEndTime.getMinute(), wheelEndTime.getSecond()); - } - if ((showDate && showTime) || (showDate && !showTime) ) { - if (end.getTime().before(start.getTime())) { - Toast.makeText(requireContext(), "结束时间不能早于开始时间", Toast.LENGTH_SHORT).show(); - return; - } - } - - if (listener != null) { - listener.onTimeRangeSelected(start.getTime(), end.getTime()); - } - dismiss(); + validateAndSubmit(); }); - - return view; } -} + /** + * 验证并提交选择 + */ + private void validateAndSubmit() { + // 确保使用最新的选择器值 + syncPickerValuesToCalendars(); + + // 验证时间范围 + if ((showDate && showTime) || (showDate && !showTime)) { + if (endCalendar.getTime().before(startCalendar.getTime())) { + Toast.makeText(requireContext(), "结束时间不能早于开始时间", Toast.LENGTH_SHORT).show(); + return; + } + } + + // 回调监听器 + if (listener != null) { + listener.onTimeRangeSelected(startCalendar.getTime(), endCalendar.getTime()); + } + dismiss(); + } + + /** + * 同步选择器值到Calendar对象 + */ + private void syncPickerValuesToCalendars() { + if (showDate) { + startCalendar.set(wheelStartDate.getYear(), wheelStartDate.getMonth(), wheelStartDate.getDay()); + endCalendar.set(wheelEndDate.getYear(), wheelEndDate.getMonth(), wheelEndDate.getDay()); + } + + if (showTime) { + startCalendar.set(Calendar.HOUR_OF_DAY, wheelStartTime.getHour()); + startCalendar.set(Calendar.MINUTE, wheelStartTime.getMinute()); + if (showSeconds) { + startCalendar.set(Calendar.SECOND, wheelStartTime.getSecond()); + } + + endCalendar.set(Calendar.HOUR_OF_DAY, wheelEndTime.getHour()); + endCalendar.set(Calendar.MINUTE, wheelEndTime.getMinute()); + if (showSeconds) { + endCalendar.set(Calendar.SECOND, wheelEndTime.getSecond()); + } + } + } +} \ No newline at end of file diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelDatePicker.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelDatePicker.java index bea0b682..6136abaa 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelDatePicker.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelDatePicker.java @@ -11,6 +11,13 @@ public class WheelDatePicker extends LinearLayout { private NumberPicker yearPicker, monthPicker, dayPicker; private int maxDay = 31; + + // 值变化监听器接口 + public interface OnDateSelectedListener { + void onDateSelected(int year, int month, int day); + } + + private OnDateSelectedListener onDateSelectedListener; public WheelDatePicker(Context context) { this(context, null); @@ -45,11 +52,28 @@ public class WheelDatePicker extends LinearLayout { // 月份从 1 到 12 monthPicker.setMinValue(1); monthPicker.setMaxValue(12); - monthPicker.setOnValueChangedListener((picker, oldVal, newVal) -> updateDays()); + monthPicker.setOnValueChangedListener((picker, oldVal, newVal) -> { + updateDays(); + if (onDateSelectedListener != null) { + onDateSelectedListener.onDateSelected(yearPicker.getValue(), monthPicker.getValue() - 1, dayPicker.getValue()); + } + }); // 默认天数范围 dayPicker.setMinValue(1); dayPicker.setMaxValue(maxDay); + dayPicker.setOnValueChangedListener((picker, oldVal, newVal) -> { + if (onDateSelectedListener != null) { + onDateSelectedListener.onDateSelected(yearPicker.getValue(), monthPicker.getValue() - 1, dayPicker.getValue()); + } + }); + + yearPicker.setOnValueChangedListener((picker, oldVal, newVal) -> { + updateDays(); + if (onDateSelectedListener != null) { + onDateSelectedListener.onDateSelected(yearPicker.getValue(), monthPicker.getValue() - 1, dayPicker.getValue()); + } + }); } private void updateDays() { @@ -94,4 +118,12 @@ public class WheelDatePicker extends LinearLayout { public int getDay() { return dayPicker.getValue(); } + + /** + * 设置日期选择监听器 + * @param listener 监听器 + */ + public void setOnDateSelectedListener(OnDateSelectedListener listener) { + this.onDateSelectedListener = listener; + } } \ No newline at end of file diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelTimePicker.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelTimePicker.java index 6259d36f..5bfab6ef 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelTimePicker.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/WheelTimePicker.java @@ -9,6 +9,13 @@ public class WheelTimePicker extends LinearLayout { private NumberPicker hourPicker, minutePicker, secondPicker; private boolean showSeconds = true; // 默认显示秒 + + // 值变化监听器接口 + public interface OnValueChangedListener { + void onValueChanged(); + } + + private OnValueChangedListener onValueChangedListener; public WheelTimePicker(Context context) { this(context, null); @@ -41,14 +48,29 @@ public class WheelTimePicker extends LinearLayout { // 设置小时范围 hourPicker.setMinValue(0); hourPicker.setMaxValue(23); + hourPicker.setOnValueChangedListener((picker, oldVal, newVal) -> { + if (onValueChangedListener != null) { + onValueChangedListener.onValueChanged(); + } + }); // 设置分钟范围 minutePicker.setMinValue(0); minutePicker.setMaxValue(59); + minutePicker.setOnValueChangedListener((picker, oldVal, newVal) -> { + if (onValueChangedListener != null) { + onValueChangedListener.onValueChanged(); + } + }); // 秒范围 secondPicker.setMinValue(0); secondPicker.setMaxValue(59); + secondPicker.setOnValueChangedListener((picker, oldVal, newVal) -> { + if (onValueChangedListener != null) { + onValueChangedListener.onValueChanged(); + } + }); } public void init(int hour, int minute, int second) { @@ -79,4 +101,12 @@ public class WheelTimePicker extends LinearLayout { secondPicker.setVisibility(showSeconds ? VISIBLE : GONE); } } + + /** + * 设置值变化监听器 + * @param listener 监听器 + */ + public void setOnValueChangedListener(OnValueChangedListener listener) { + this.onValueChangedListener = listener; + } } diff --git a/BaseModule/src/main/res/layout/dialog_double_time_picker.xml b/BaseModule/src/main/res/layout/dialog_double_time_picker.xml index 2e6b4924..42e8f024 100644 --- a/BaseModule/src/main/res/layout/dialog_double_time_picker.xml +++ b/BaseModule/src/main/res/layout/dialog_double_time_picker.xml @@ -5,6 +5,30 @@ android:orientation="vertical" android:padding="16dp"> + + + + + + v2TIMGroupManager?.muteAllGroupMembers(groupId, b, object : V2TIMCallback { override fun onSuccess() { - + mBinding?.switJy?.isChecked = !b } override fun onError(code: Int, desc: String?) { - mBinding?.switJy?.isChecked = !b + } }) } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java index de75c963..732c22f5 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java @@ -145,12 +145,15 @@ public class CreatedRoomActivity extends BaseMvpActivity + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> @@ -25,7 +26,7 @@ android:id="@+id/top_bar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="-20dp"/> + android:layout_marginTop="-20dp" /> @@ -187,6 +188,38 @@ + + + + + + + + + - - - + > + +