DatePicker,TimePicker的使用
1、DatePicker的使用
1.1、
1)、在布局文件中声明一个DatePicker控件时,切换到视图模式时看不到效果,需要通过程序控制对其进行初始化。<DatePicker -->声明DatePicker控件 android:id="@+id/dp_showdate" -->设置控件id android:layout_width="match_parent" -->设置控件宽度为父容器宽度 android:layout_height="wrap_content"/> -->设置控件高度为父容器高度
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //调用父类方法 super.setContentView(R.layout.datepicker_layout);//设置布局管理器 /* year:表示要设置的年份 * monthOfYear:表示要设置的一年中的某月 * dayOfMonth:表示要设置的一个月中的某天 * onDateChangedListener:表示要设置的时间改变的监听器,当时间改变时触发该事件 */ dp_showdate.init(year, monthOfYear, dayOfMonth, onDateChangedListener); }
2)、要对以上:year、monthOfYear、dayOfMonth进行初始化,可以使用java中提供的Calendar类方便的获得。//使用Calendar类提供的日期方法,获得相应的年月日 Calendar calendar = Calendar.getInstance(); //通过Calendar类提供的静态方法:类名.方法()获得Calendar实例 int year = calendar.get(Calendar.YEAR); //设置年份 int monthOfYear = calendar.get(Calendar.YEAR); //设置一年中的某月 int dayOfMonth = calendar.get(Calendar.YEAR); //设置一月中的某天
3)、然后再设置日期改变监听:dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){ @Override public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) { //什么都没做 } });
4)、运行效果:
1.2、为DatePicker添加日期改变监听
1)、在布局文件中添加一个TextView,用于显示日期:<TextView -->定义一个TextView控件 android:id="@+id/tv_showdate" -->设置控件id android:layout_width="match_parent" -->设置控件宽度 android:layout_height="wrap_content"/> -->设置控件高度
2)、在监听方法中初始化年月日:DatePickerDemoActivity.this.year = year; //选择后的年份 DatePickerDemoActivity.this.monthOfYear = monthOfYear; //选择后的月份 DatePickerDemoActivity.this.dayOfMonth = dayOfMonth; //选择后的天
定义一个方法,用于显示信息:
/* * 该方法用于显示信息 */ public void showInfo(int year,int monthOfYear,int dayOfMonth){ String info =year+"年"+monthOfYear+"月"+dayOfMonth+"日"; tv_showdate.setText(info);//把输出的信息放到TextView中 }
3)、完整代码:<?xml version="1.0" encoding="utf-8"?> <LinearLayout -->定义线性布局管理器 xmlns:android="http://schemas.android.com/apk/res/android" -->命名控件 android:layout_width="match_parent" -->设置管理器宽度为屏幕宽度 android:layout_height="match_parent" -->设置管理器高度为屏幕高度 android:orientation="vertical" > -->设置管理器中的内容为垂直摆放 <TextView -->定义组件 android:id="@+id/tv_showdate" -->为组件设置id android:layout_width="match_parent" -->设置组件宽度为父容器宽度 android:layout_height="wrap_content"/> -->设置组件高度 <DatePicker -->定义组件 android:id="@+id/dp_showdate" -->设置组件id android:layout_width="match_parent" -->设置组件宽度为父容器宽度 android:layout_height="wrap_content"/> -->设置组件高度为包裹内容高度 </LinearLayout>
DatePickerDemoActivity类:
package com.example.basiccomponent2; import java.util.Calendar; import android.app.Activity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; import android.widget.TextView; public class DatePickerDemoActivity extends Activity { private TextView tv_showdate = null; //声明TextView对象 private DatePicker dp_showdate = null; //声明DatePicker对象 //使用Calendar类提供的日期方法,获得相应的年月日 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int monthOfYear = calendar.get(Calendar.YEAR); int dayOfMonth = calendar.get(Calendar.YEAR); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.datepicker_layout);//设置布局管理器 //初始化view dp_showdate = (DatePicker)super.findViewById(R.id.dp_showdate); tv_showdate = (TextView)super.findViewById(R.id.tv_showdate); /* year:表示要设置的年份 * monthOfYear:表示要设置的一年中的某月 * dayOfMonth:表示要设置的一个月中的某天 * onDateChangedListener:表示要设置的时间改变的监听器 */ dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){ @Override public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) { DatePickerDemoActivity.this.year = year; //选择后的年份 DatePickerDemoActivity.this.monthOfYear = monthOfYear; //选择后的月份 DatePickerDemoActivity.this.dayOfMonth = dayOfMonth; //选择后的天 DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth);//调用显示信息方法 } }); } /* * 该方法用于显示信息 */ public void showInfo(int year,int monthOfYear,int dayOfMonth){ String info =year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日"; tv_showdate.setText(info);//把输出的信息放到TextView中 } }
修改显示日期效果,为小于10的数字添加0:
public void showInfo(int year, int monthOfYear, int dayOfMonth) { String info = year + "年" + addZero(monthOfYear+1) + "月" + addZero(dayOfMonth) + "日"; tv_showdate.setText(info);// 把输出的信息放到TextView中 } public String addZero(int num){ String str = null; if(num<10){ str = "0"+num; }else{ str = ""+num; } return str; }
运行效果:
2、TimePicker的使用
2.1、
1)、TimePicker的使用和DatePicker类似,但是不用给其初始化,在布局文件中添加一个TimePicker组件:<TimePicker android:id="@+id/tp_showtime" android:layout_width="match_parent" android:layout_height="wrap_content"/>
2)、在Activity类中,完整代码:package com.example.basiccomponent2; import java.util.Calendar; import android.app.Activity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; import android.widget.TextView; import android.widget.TimePicker; import android.widget.TimePicker.OnTimeChangedListener; public class DatePickerDemoActivity extends Activity { private TextView tv_showdate = null; // private DatePicker dp_showdate = null; // private TimePicker tp_showtime = null; // 使用Calendar类提供的日期方法,获得相应的年月日 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int monthOfYear = calendar.get(Calendar.YEAR); int dayOfMonth = calendar.get(Calendar.YEAR); int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.datepicker_layout);// 设置布局管理器 // 初始化view dp_showdate = (DatePicker) super.findViewById(R.id.dp_showdate); tv_showdate = (TextView) super.findViewById(R.id.tv_showdate); tp_showtime = (TimePicker)super.findViewById(R.id.tp_showtime); /* * year:表示要设置的年份 monthOfYear:表示要设置的一年中的某月 dayOfMonth:表示要设置的一个月中的某天 * onDateChangedListener:表示要设置的时间改变的监听器 */ dp_showdate.init(year, monthOfYear, dayOfMonth,new OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) { DatePickerDemoActivity.this.year = year; // 选择后的年份 DatePickerDemoActivity.this.monthOfYear = monthOfYear; // 选择后的月份 DatePickerDemoActivity.this.dayOfMonth = dayOfMonth; // 选择后的天 DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法 } }); //设置时间事件 tp_showtime.setOnTimeChangedListener(new OnTimeChangedListener(){ @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { DatePickerDemoActivity.this.hourOfDay = hourOfDay; DatePickerDemoActivity.this.minute = minute; DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法 } }); } /* * 该方法用于显示信息 */ public void showInfo(int year, int monthOfYear, int dayOfMonth,int hourOfDay,int minute) { String info = year + "年" + addZero(monthOfYear+1) + "月" + addZero(dayOfMonth) + "日" + addZero(hourOfDay) + "时" + addZero(minute) + "分"; tv_showdate.setText(info);// 把输出的信息放到TextView中 } public String addZero(int num){ String str = null; if(num<10){ str = "0"+num; }else{ str = ""+num; } return str; } }
3)、运行效果: