|
|
|
@ -211,46 +211,43 @@ public class DateTimePicker extends FrameLayout {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public DateTimePicker(Context context, long date, boolean is24HourView) {
|
|
|
|
|
super(context);
|
|
|
|
|
mDate = Calendar.getInstance();
|
|
|
|
|
mInitialising = true;
|
|
|
|
|
mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY;
|
|
|
|
|
inflate(context, R.layout.datetime_picker, this);
|
|
|
|
|
|
|
|
|
|
mDateSpinner = (NumberPicker) findViewById(R.id.date);
|
|
|
|
|
mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL);
|
|
|
|
|
mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL);
|
|
|
|
|
mDateSpinner.setOnValueChangedListener(mOnDateChangedListener);
|
|
|
|
|
|
|
|
|
|
mHourSpinner = (NumberPicker) findViewById(R.id.hour);
|
|
|
|
|
mHourSpinner.setOnValueChangedListener(mOnHourChangedListener);
|
|
|
|
|
mMinuteSpinner = (NumberPicker) findViewById(R.id.minute);
|
|
|
|
|
mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL);
|
|
|
|
|
mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL);
|
|
|
|
|
mMinuteSpinner.setOnLongPressUpdateInterval(100);
|
|
|
|
|
mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener);
|
|
|
|
|
|
|
|
|
|
String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings();
|
|
|
|
|
mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm);
|
|
|
|
|
mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL);
|
|
|
|
|
mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL);
|
|
|
|
|
mAmPmSpinner.setDisplayedValues(stringsForAmPm);
|
|
|
|
|
mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener);
|
|
|
|
|
|
|
|
|
|
// update controls to initial state
|
|
|
|
|
updateDateControl();
|
|
|
|
|
updateHourControl();
|
|
|
|
|
updateAmPmControl();
|
|
|
|
|
|
|
|
|
|
set24HourView(is24HourView);
|
|
|
|
|
|
|
|
|
|
// set to current time
|
|
|
|
|
setCurrentDate(date);
|
|
|
|
|
|
|
|
|
|
setEnabled(isEnabled());
|
|
|
|
|
|
|
|
|
|
// set the content descriptions
|
|
|
|
|
mInitialising = false;
|
|
|
|
|
super(context); // 调用父类的构造方法
|
|
|
|
|
mDate = Calendar.getInstance(); // 获取当前时间的日历对象
|
|
|
|
|
mInitialising = true; // 表示正在初始化
|
|
|
|
|
mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; // 根据当前小时判断是否为上午
|
|
|
|
|
inflate(context, R.layout.datetime_picker, this); // 将布局文件实例化为视图并添加到当前视图
|
|
|
|
|
|
|
|
|
|
mDateSpinner = (NumberPicker) findViewById(R.id.date); // 获取日期选择器视图
|
|
|
|
|
mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); // 设置日期选择器的最小值
|
|
|
|
|
mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); // 设置日期选择器的最大值
|
|
|
|
|
mDateSpinner.setOnValueChangedListener(mOnDateChangedListener); // 设置日期选择器值变化的监听器
|
|
|
|
|
|
|
|
|
|
mHourSpinner = (NumberPicker) findViewById(R.id.hour); // 获取小时选择器视图
|
|
|
|
|
mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); // 设置小时选择器值变化的监听器
|
|
|
|
|
mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); // 获取分钟选择器视图
|
|
|
|
|
mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); // 设置分钟选择器的最小值
|
|
|
|
|
mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); // 设置分钟选择器的最大值
|
|
|
|
|
mMinuteSpinner.setOnLongPressUpdateInterval(100); // 设置长按更新间隔
|
|
|
|
|
mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener); // 设置分钟选择器值变化的监听器
|
|
|
|
|
|
|
|
|
|
String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings(); // 获取上午/下午的字符串数组
|
|
|
|
|
mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm); // 获取上午/下午选择器视图
|
|
|
|
|
mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL); // 设置上午/下午选择器的最小值
|
|
|
|
|
mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL); // 设置上午/下午选择器的最大值
|
|
|
|
|
mAmPmSpinner.setDisplayedValues(stringsForAmPm); // 设置上午/下午选择器的显示值
|
|
|
|
|
mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener); // 设置上午/下午选择器值变化的监听器
|
|
|
|
|
|
|
|
|
|
updateDateControl(); // 更新日期选择器控件
|
|
|
|
|
updateHourControl(); // 更新小时选择器控件
|
|
|
|
|
updateAmPmControl(); // 更新上午/下午选择器控件
|
|
|
|
|
|
|
|
|
|
set24HourView(is24HourView); // 设置小时制显示
|
|
|
|
|
|
|
|
|
|
setCurrentDate(date); // 设置当前日期时间
|
|
|
|
|
|
|
|
|
|
setEnabled(isEnabled()); // 设置是否可用
|
|
|
|
|
|
|
|
|
|
mInitialising = false; // 初始化完成
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|