|
|
|
@ -29,6 +29,12 @@ import android.content.DialogInterface.OnClickListener;
|
|
|
|
|
import android.text.format.DateFormat;
|
|
|
|
|
import android.text.format.DateUtils;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 日期选择器 界面
|
|
|
|
|
* 将用户交互与日期选择器数据类对接
|
|
|
|
|
* 并保存了一些基础信息,如当前日期、是否为24小时格式等
|
|
|
|
|
* 也注册了相应的事件监听器
|
|
|
|
|
*/
|
|
|
|
|
public class DateTimePickerDialog extends AlertDialog implements OnClickListener {
|
|
|
|
|
|
|
|
|
|
private Calendar mDate = Calendar.getInstance();
|
|
|
|
@ -36,10 +42,11 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener
|
|
|
|
|
private OnDateTimeSetListener mOnDateTimeSetListener;
|
|
|
|
|
private DateTimePicker mDateTimePicker;
|
|
|
|
|
|
|
|
|
|
// 为什么要在类里面声明公开接口还在其他类中使用?这样做并不规范
|
|
|
|
|
public interface OnDateTimeSetListener {
|
|
|
|
|
void OnDateTimeSet(AlertDialog dialog, long date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 构造方法
|
|
|
|
|
public DateTimePickerDialog(Context context, long date) {
|
|
|
|
|
super(context);
|
|
|
|
|
mDateTimePicker = new DateTimePicker(context);
|
|
|
|
@ -63,15 +70,15 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener
|
|
|
|
|
set24HourView(DateFormat.is24HourFormat(this.getContext()));
|
|
|
|
|
updateTitle(mDate.getTimeInMillis());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置为 24 小时的日期显示格式
|
|
|
|
|
public void set24HourView(boolean is24HourView) {
|
|
|
|
|
mIs24HourView = is24HourView;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 初始化 OnDateTimeSetListener 监听器
|
|
|
|
|
public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) {
|
|
|
|
|
mOnDateTimeSetListener = callBack;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 更新弹出窗口标题
|
|
|
|
|
private void updateTitle(long date) {
|
|
|
|
|
int flag =
|
|
|
|
|
DateUtils.FORMAT_SHOW_YEAR |
|
|
|
|
@ -80,9 +87,10 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener
|
|
|
|
|
flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR;
|
|
|
|
|
setTitle(DateUtils.formatDateTime(this.getContext(), date, flag));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface arg0, int arg1) {
|
|
|
|
|
if (mOnDateTimeSetListener != null) {
|
|
|
|
|
// onClick 委托至 OnDateTimeSetListener
|
|
|
|
|
mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|