效果展示:
一:目录结构
二:src源文件
MainActivity.java文件:
package com.peng.testdate;
import java.util.Calendar;
import android.media.audiofx.Visualizer.OnDataCaptureListener;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
/*
* 日历和时间练习
*/
public class MainActivity extends Activity implements OnTimeChangedListener {
// 声明控件
private DatePicker datePicker;
private TimePicker timePicker;
// 声明数据
private int year;
private int month;
private int day;
private int hour;
private int minutes;
// 日历
private Calendar calendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();// 初始化控件
// 通过Calendar类获取系统当前的时间
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH) + 1;// 注意这里获取到的月份比现实中少一
day = calendar.get(Calendar.DAY_OF_MONTH);// 注意参数:获取的是当前月的具体哪一天
hour = calendar.get(Calendar.HOUR_OF_DAY);// 注意参数:获取当天具体的hour
minutes = calendar.get(Calendar.MINUTE);
// 为控件添加监听事件
setViewsAdapter();
// 初始化datePicker
initViews_DatePicker();
/**/
// 对话框形式的datePicker---(测试的时候把注释去掉,与getTimePicker_Dialog().show()不要同时去掉注释)
// getDatePicker_Dialog().show();
// 对话框行驶的timePicker---(测试的时候把注释去掉,与getDatePicker_Dialog().show()不要同时去掉注释)
// getTimePicker_Dialog().show();
/**/
}
// 初始化控件
private void initViews() {
datePicker = (DatePicker) findViewById(R.id.datePicker1);
timePicker = (TimePicker) findViewById(R.id.timePicker1);
}
// 初始化控件--DatePicker比较特殊,init中的参数添加监听事件
private void initViews_DatePicker() {
// 初始化datePicker(注意第二个参数传入的是没有进行+1操作的Month值)
datePicker.init(year, calendar.get(Calendar.MONTH), day,
new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
MainActivity.this.setTitle(year + "年 "
+ (monthOfYear + 1) + "月 " + dayOfMonth + "日");
}
});
}
// 为控件添加监听事件
private void setViewsAdapter() {
timePicker.setOnTimeChangedListener(this);
}
// timePicker的监听事件
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
MainActivity.this.setTitle("修改后的时间:" + hourOfDay + "时 " + minute + "分");
}
// 对话框形式的datePicker
private DatePickerDialog getDatePicker_Dialog() {
DatePickerDialog dpd = new DatePickerDialog(MainActivity.this,
new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
MainActivity.this.setTitle(year + "年 "
+ (monthOfYear + 1) + "月 " + dayOfMonth + "日");
}
}, year, month - 1, day);
return dpd;
}
// 对话框形式的timePicker
private TimePickerDialog getTimePicker_Dialog() {
TimePickerDialog tpd = new TimePickerDialog(MainActivity.this,
new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
MainActivity.this.setTitle("修改后的时间:" + hourOfDay + "时 "
+ minute + "分");
}
}, hour, minutes, true);
return tpd;
}
}
layout_main.xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TimePicker
android:id="@+id/timePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<DatePicker
android:id="@+id/datePicker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
三:注意事项
Calendar获取系统当前日期:
测试dialog显示时:
DatePicker初始化函数及其参数形式内置监听:
TimePickerDialog函数参数: