转载注明出处:http://blog.csdn.net/eana_don/article/details/8280776
参考学习材料:《疯狂android讲义》,官网API
DatePicker和TimePicker都是提供用户选择时间的控件,前者提供用户选择日期,后者提供用户选择具体时间。当程序需要响应用户的选择获取被选择的日期和时间时,则分别需要添加监听OnDateChangedListener,OnTimeChangedListener。
下面是布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<DatePicker
android:id="@+id/date_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
/>
<TimePicker
android:id="@+id/time_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
/>
<EditText
android:id="@+id/et_show"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"
/>
</LinearLayout>
下面是代码部分:
package cn.don.userinterface;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
//类的本身实现接口
public class PickerActivity extends Activity implements OnDateChangedListener,OnTimeChangedListener{
private DatePicker datePicker;
private TimePicker timePicker;
private EditText etShow;
private int year;
private int month;
private int day;
private int hour;
private int minute;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_picker);
datePicker = (DatePicker) findViewById(R.id.date_picker);
timePicker = (TimePicker) findViewById(R.id.time_picker);
etShow = (EditText) findViewById(R.id.et_show);
//获取当前的时间
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
hour = c.get(Calendar.HOUR);
minute = c.get(Calendar.MINUTE);
//初始化datePicker同时指定监听器
datePicker.init(year, //年
month,//月
day, //日
this);//指定发生变化时的监听
timePicker.setOnTimeChangedListener(this);
//设置24小时制,则不出现上午下午按钮
//默认为false
timePicker.setIs24HourView(true);
}
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
PickerActivity.this.hour = hourOfDay;
PickerActivity.this.minute = minute;
showInfo(year,month,day,hour,minute);
}
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
PickerActivity.this.year = year;
PickerActivity.this.month = monthOfYear;
PickerActivity.this.day = dayOfMonth;
showInfo(year,month,day,hour,minute);
}
private void showInfo(int yy,int mm,int dd,int hh,int mi){
etShow.setText("你选择的时间为:" + yy + "年" + mm + "月" + dd + "日 " + hh + "时" + mi +"分");
}
}
下面是运行结果: