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.
5MI/DateTimePickerDialog (2).java

83 lines
3.6 KiB

/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
* 2010-2011MiCode
*/
/* 省略了其余版权和许可信息 */
package net.micode.notes.ui;
// 声明这个类所在的包名。
import java.util.Calendar;
// 导入Java的Calendar类用于处理日期和时间。
// 省略了其他import语句
public class DateTimePickerDialog extends AlertDialog implements OnClickListener {
// 声明一个名为DateTimePickerDialog的类它继承自AlertDialog并实现OnClickListener接口。
private Calendar mDate = Calendar.getInstance();
// 声明一个Calendar对象mDate用于存储日期和时间初始化为当前时间。
private boolean mIs24HourView;
// 声明一个布尔变量mIs24HourView用于表示是否使用24小时制。
private OnDateTimeSetListener mOnDateTimeSetListener;
// 声明一个OnDateTimeSetListener接口类型的变量mOnDateTimeSetListener用于回调日期和时间设置。
private DateTimePicker mDateTimePicker;
// 声明一个DateTimePicker对象mDateTimePicker用于日期和时间的选择。
// 声明一个内部接口OnDateTimeSetListener包含一个方法OnDateTimeSet。
public interface OnDateTimeSetListener {
void OnDateTimeSet(AlertDialog dialog, long date);
}
// DateTimePickerDialog的构造方法接收Context和初始日期长整型
public DateTimePickerDialog(Context context, long date) {
super(context);
// 初始化DateTimePicker对象并设置到对话框中。
mDateTimePicker = new DateTimePicker(context);
setView(mDateTimePicker);
// 设置日期和时间变化监听器当日期或时间变化时更新mDate对象并更新标题。
mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { ... });
// 使用传入的日期初始化mDate对象并设置秒为0。
mDate.setTimeInMillis(date);
mDate.set(Calendar.SECOND, 0);
// 设置DateTimePicker的当前日期。
mDateTimePicker.setCurrentDate(mDate.getTimeInMillis());
// 设置对话框的确定按钮和取消按钮确定按钮使用当前对象作为监听器取消按钮为null。
setButton(...);
setButton2(...);
// 根据系统的设置初始化24小时制视图。
set24HourView(DateFormat.is24HourFormat(this.getContext()));
// 更新对话框的标题为当前日期和时间。
updateTitle(mDate.getTimeInMillis());
}
// 设置24小时制视图的方法。
public void set24HourView(boolean is24HourView) {
mIs24HourView = is24HourView;
}
// 设置日期和时间设置监听器的方法。
public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) {
mOnDateTimeSetListener = callBack;
}
// 更新标题的方法,根据当前日期和时间设置对话框的标题。
private void updateTitle(long date) {
int flag = ...; // 设置日期时间格式化标志包括是否显示年、日期、时间以及是否使用24小时制。
setTitle(DateUtils.formatDateTime(this.getContext(), date, flag));
}
// 实现OnClickListener接口的onClick方法当点击确定按钮时调用。
public void onClick(DialogInterface arg0, int arg1) {
if (mOnDateTimeSetListener != null) {
// 如果设置了日期和时间设置监听器则回调其OnDateTimeSet方法。
mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis());
}
}
}