diff --git a/src/周希奥UI注释5 b/src/周希奥UI注释5 new file mode 100644 index 0000000..4d176db --- /dev/null +++ b/src/周希奥UI注释5 @@ -0,0 +1,101 @@ +package net.micode.notes.ui; + +// 导入Java系统中处理日期和时间的类 +import java.util.Calendar; + +// 导入应用程序中的资源类 +import net.micode.notes.R; +// 导入自定义的日期时间选择器类 +import net.micode.notes.ui.DateTimePicker; +// 导入自定义的日期时间选择器变化监听器接口 +import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener; + +// 导入Android系统中处理对话框的类 +import android.app.AlertDialog; +// 导入Android系统中处理上下文环境的类,用于访问应用程序的资源和类 +import android.content.Context; +// 导入Android系统中处理对话框按钮点击事件的接口 +import android.content.DialogInterface; +// 导入Android系统中处理对话框按钮点击事件的监听器接口 +import android.content.DialogInterface.OnClickListener; +// 导入Android系统中处理日期格式的类 +import android.text.format.DateFormat; +// 导入Android系统中处理日期时间格式化的工具类 +import android.text.format.DateUtils; + +// DateTimePickerDialog类继承自AlertDialog,用于创建一个日期时间选择对话框 +public class DateTimePickerDialog extends AlertDialog implements OnClickListener { + + private Calendar mDate = Calendar.getInstance(); // 创建一个Calendar实例,用于操作日期时间 + private boolean mIs24HourView; // 标记是否为24小时制视图 + private OnDateTimeSetListener mOnDateTimeSetListener; // 时间日期选择的回调接口 + private DateTimePicker mDateTimePicker; // DateTimePicker控件,用于用户选择日期时间 + + // 定义时间日期选择的回调接口 + public interface OnDateTimeSetListener { + void OnDateTimeSet(AlertDialog dialog, long date); + // 当日期时间被设置时调用的方法,传递对话框实例和日期时间的毫秒数 + } + + // 构造函数,用于创建DateTimePickerDialog实例 + public DateTimePickerDialog(Context context, long date) { + super(context); // 调用父类构造函数,初始化AlertDialog + mDateTimePicker = new DateTimePicker(context); // 创建DateTimePicker控件实例 + setView(mDateTimePicker); // 将DateTimePicker控件添加到对话框中 + + // 设置DateTimePicker控件的日期时间变化监听器 + mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { + public void onDateTimeChanged(DateTimePicker view, int year, int month, + int dayOfMonth, int hourOfDay, int minute) { + // 当日期时间发生变化时,更新Calendar实例中的日期时间信息 + mDate.set(Calendar.YEAR, year); //更新Calendar实例中的年份信息 + mDate.set(Calendar.MONTH, month); 更新Calendar实例中的月份信息 + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); 更新Calendar实例中的日期信息 + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); 更新Calendar实例中的日期时间信息 + mDate.set(Calendar.MINUTE, minute); 更新Calendar实例中的分钟信息 + // 更新对话框标题,显示当前选择的日期时间 + updateTitle(mDate.getTimeInMillis()); + } + }); + + mDate.setTimeInMillis(date); // 设置Calendar实例的时间为传入的日期时间 + mDate.set(Calendar.SECOND, 0); // 将秒数设置为0 + mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); // 设置DateTimePicker控件的当前日期时间 + + // 设置对话框的按钮 + setButton(context.getString(R.string.datetime_dialog_ok), this); + setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); + + // 根据系统设置确定是否使用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 = + DateUtils.FORMAT_SHOW_YEAR | // 显示年份 + DateUtils.FORMAT_SHOW_DATE | // 显示日期 + DateUtils.FORMAT_SHOW_TIME; // 显示时间 + flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_12HOUR; // 根据是否为24小时制设置时间格式 + setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); // 设置对话框标题 + } + + // 当对话框中的按钮被点击时调用的方法 + public void onClick(DialogInterface arg0, int arg1) { + if (mOnDateTimeSetListener != null) { + // 如果设置了时间日期选择的回调接口,则调用其OnDateTimeSet方法 + mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); + } + } +} \ No newline at end of file