1. TimePicker视图
TimePicker视图显示了一个让用户设置时间的标准用户界面,默认情况下是以AM/PM的形式显示时间(如果要用24小时的格式来显示则需要使用函数setIs24HourView(true))。如果要获取用户设置的时间,可以使用函数getCurrentHour()和getCurrentMinute()来返回时间(注意不管怎么设置,getCurrentHour返回的是24小时格式的时间)。
1)直接显示在界面的:
在xml文件中加入一个部件<TimePicker/>,就可以使用了。
2)以对话框方式显示出来的:
为了显示一个对话框,需要使用showDialog(),并传入一个ID来表示对话框的源;然后在调用showDialog方法时,onCreateDialog()方法被调用,所以也需写onCreateDialog方法。如下:
@Override
protected Dialog onCreateDialog(int id){
switch(id){
case TIME_DIALOG_ID:
return new TimePickerDialog(
this,mTimeSetListener,hour,minute,false);
//该部分是下面date选取器的内容
case DATE_DIALOG_ID:
return new DatePickerDialog(
this,mDateSetListener,y,m,d);
}
return null;
}
在这里创建了一个TimePickerDialog的 新实例,给它传递了当前的上下文,回调函数,初始小时和分钟,以及是否以24小时格式显示。当用户点击弹出来的TimePicker的set键时会触发onTimeSet()方法。
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener()
{
public void onTimeSet(TimePicker view,int hourOfDay,int minuteOfHour){
//设置时间
hour = hourOfDay;
minute = minuteOfHour;
//设置时间的格式
SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm aa");
Date date = new Date(0,0,0,hour,minute);
String strDate = timeFormat.format(date);
Toast.makeText(getBaseContext(),
"Time selected:"+strDate, Toast.LENGTH_SHORT).show();
}
};
2.DatePicker视图
类似TimePicker,它可以选择一个特定的日期。通过调用getMonth(),getDayOfMonth()和getYear()方法来分别获取月份,日子和年份(注意:getMonth返回0代表一月,所以需将返回结果加1来获得对应的月份)
1)直接显示在界面的:
在xml文件中加入一个部件<DatePicker/>,就可以使用了。
2)以对话框方式显示出来的:
与上面的类似,也是通过showDialog(),onCreateDialog(),onDateSet()方式来显示。
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener()
{
public void onDateSet(DatePicker view,int year,int monthOfYear,int dayOfMonth)
{
y = year;
m = monthOfYear;
d = dayOfMonth;
Toast.makeText(getBaseContext(),
"Date selected:"+(monthOfYear+1)
+"/"+dayOfMonth+"/"+year, Toast.LENGTH_SHORT).show();
}
};
注意;在显示对话框之前需要初始化3个变量----y,m,d----- 。如果不这样做时,当运行时创建一个实例时将发生非法参数异常(current should be >=start and <=end)。
结论:个人觉得在多种应用中都使用了这两种视图,有必要好好的掌握它们。