You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.5 KiB
99 lines
2.5 KiB
|
|
/**
|
|
* 自定义日期时间选择器视图。
|
|
*/
|
|
public class DateTimePicker extends FrameLayout {
|
|
// 类成员变量和常量定义
|
|
private static final boolean DEFAULT_ENABLE_STATE = true;
|
|
private static final int HOURS_IN_HALF_DAY = 12;
|
|
// ... 其他常量定义
|
|
|
|
// 日期时间选择器的组件
|
|
private final NumberPicker mDateSpinner;
|
|
private final NumberPicker mHourSpinner;
|
|
private final NumberPicker mMinuteSpinner;
|
|
private final NumberPicker mAmPmSpinner;
|
|
private Calendar mDate;
|
|
|
|
// 日期显示值数组
|
|
private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK];
|
|
|
|
// AM/PM标志
|
|
private boolean mIsAm;
|
|
|
|
// 是否为24小时视图
|
|
private boolean mIs24HourView;
|
|
|
|
// 启用状态
|
|
private boolean mIsEnabled = DEFAULT_ENABLE_STATE;
|
|
|
|
// 初始化标志
|
|
private boolean mInitialising;
|
|
|
|
// 日期时间改变监听器
|
|
private OnDateTimeChangedListener mOnDateTimeChangedListener;
|
|
|
|
// NumberPicker值改变监听器
|
|
private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() {
|
|
@Override
|
|
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
|
|
// 日期改变时的处理逻辑
|
|
}
|
|
};
|
|
// ... 其他监听器定义
|
|
|
|
/**
|
|
* 定义日期时间改变监听器接口。
|
|
*/
|
|
public interface OnDateTimeChangedListener {
|
|
void onDateTimeChanged(DateTimePicker view, int year, int month,
|
|
int dayOfMonth, int hourOfDay, int minute);
|
|
}
|
|
|
|
/**
|
|
* 构造函数。
|
|
*/
|
|
public DateTimePicker(Context context) {
|
|
// ... 实现代码
|
|
}
|
|
|
|
/**
|
|
* 设置当前日期。
|
|
* @param date 长整型日期值。
|
|
*/
|
|
public void setCurrentDate(long date) {
|
|
// ... 实现代码
|
|
}
|
|
|
|
/**
|
|
* 获取当前年份。
|
|
* @return 当前年份。
|
|
*/
|
|
public int getCurrentYear() {
|
|
// ... 实现代码
|
|
}
|
|
|
|
// ... 其他日期时间组件的getter和setter方法
|
|
|
|
/**
|
|
* 设置是否为24小时视图。
|
|
* @param is24HourView 是否为24小时视图。
|
|
*/
|
|
public void set24HourView(boolean is24HourView) {
|
|
// ... 实现代码
|
|
}
|
|
|
|
/**
|
|
* 设置日期时间改变监听器。
|
|
* @param callback 监听器回调。
|
|
*/
|
|
public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback) {
|
|
// ... 实现代码
|
|
}
|
|
|
|
private void onDateTimeChanged() {
|
|
// 通知监听器日期时间改变
|
|
}
|
|
}
|
|
|