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.
test123/DateTimePickerDialog.java

90 lines
4.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/ /*版权和许可证声明,说明了该文件的版权信息以及遵循的许可协议*/
package net.micode.notes.ui;
import java.util.Calendar;
import net.micode.notes.R;
import net.micode.notes.ui.DateTimePicker;
import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.text.format.DateFormat;
import android.text.format.DateUtils; /*设置了代码的包名,并导入了所需的类和接口*/
public class DateTimePickerDialog extends AlertDialog implements OnClickListener { /*定义了一个名为 DateTimePickerDialog 的公共类,它扩展了 AlertDialog 并实现了 OnClickListener 接口。*/
private Calendar mDate = Calendar.getInstance();
private boolean mIs24HourView;
private OnDateTimeSetListener mOnDateTimeSetListener;
private DateTimePicker mDateTimePicker; /*声明了一些私有变量用于存储日期时间信息、24小时格式标志、监听器和日期时间选择器。 */
public interface OnDateTimeSetListener {
void OnDateTimeSet(AlertDialog dialog, long date);
} /*定义了一个内部接口 OnDateTimeSetListener用于接收日期时间设置事件的回调。 */
public DateTimePickerDialog(Context context, long date) {
super(context); /*构造函数初始化父类 AlertDialog */
mDateTimePicker = new DateTimePicker(context);
setView(mDateTimePicker);/*创建一个 DateTimePicker 实例并设置为对话框的内容视图*/
mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() {
public void onDateTimeChanged(DateTimePicker view, int year, int month,
int dayOfMonth, int hourOfDay, int minute) {
mDate.set(Calendar.YEAR, year);
mDate.set(Calendar.MONTH, month);
mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
mDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
mDate.set(Calendar.MINUTE, minute);
updateTitle(mDate.getTimeInMillis());
}
});/*为 DateTimePicker 设置监听器,在日期时间改变时更新内部的日历对象,并调用 updateTitle 方法更新对话框标题 */
mDate.setTimeInMillis(date);
mDate.set(Calendar.SECOND, 0);
mDateTimePicker.setCurrentDate(mDate.getTimeInMillis());
setButton(context.getString(R.string.datetime_dialog_ok), this);
setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null);
set24HourView(DateFormat.is24HourFormat(this.getContext()));
updateTitle(mDate.getTimeInMillis());
} /*初始化日期时间对象,并设置到 DateTimePicker 中。设置对话框的确认和取消按钮并根据系统设置决定是否使用24小时制显示时间。最后更新对话框标题。 */
public void set24HourView(boolean is24HourView) {
mIs24HourView = is24HourView;
} /*设置是否使用24小时制显示时间的方法*/
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_24HOUR;
setTitle(DateUtils.formatDateTime(this.getContext(), date, flag));
} /*更新对话框标题的方法,根据当前日期时间和格式化标志来显示日期时间。*/
public void onClick(DialogInterface arg0, int arg1) {
if (mOnDateTimeSetListener != null) {
mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis());
}
}/*实现 OnClickListener 接口的 onClick 方法,当点击对话框上的按钮时,如果设置了监听器,则调用其 OnDateTimeSet 方法*/
}/*类定义结束*/