DatePicker 与 TimePicker 应用
① 新建工程
② 修改 main.xml 布局,添加一个 DatePicker、一个 TimePicker、一个 TextView
③ DatePicker 的初始化与日期改变事件的处理
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<DatePicker
android:id="@+id/my_DatePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="10px"
android:layout_y="10px">
</DatePicker><!-- 日期设置器 -->
<TimePicker
android:id="@+id/my_TimePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="10px"
android:layout_y="150px">
</TimePicker><!-- 事件设置器 -->
<TextView
android:id="@+id/my_TextView"
android:layout_width="228px"
android:layout_height="29px"
android:text="TextView"
android:layout_x="10px"
android:layout_y="300px">
</TextView>
</AbsoluteLayout>
/* 定义 程序用到的UI元素对象:日历设置器*/
DatePicker my_datePicker;
/* findViewById()从XML中获取UI元素对象 */
my_datePicker = (DatePicker) findViewById(R.id.my_DatePicker);
41
④ TimePicker 的初始化与时间改变事件的处理
⑤ 修改 mainActivity.java,添加动态修改时间并显示效果 /*为日历设置器添加点击事件监听器,处理设置日期事件*/
my_datePicker.init(my_Year, my_Month, my_Day, newnew
newnew DatePicker.OnDateChangedListener(){
@Override public public public
public voidvoidvoidvoid onDateChanged(DatePicker view, intintintint year, intint
intint monthOfYear, intintintint dayOfMonth) { // TODOTODOTODOTODO Auto-generated method stub /*日期改变事件处理*/
} });
/* 定义 程序用到的UI元素对象:时间设置器*/
TimePicker my_timePicker;
/* findViewById()从XML中获取UI元素对象 */
my_timePicker = (TimePicker) findViewById(R.id.my_TimePicker);
/* 把时间设置成24小时制 */
my_timePicker.setIs24HourView(truetruetruetrue);
/*为时间设置器添加点击事件监听器,处理设置时间事件*/
my_timePicker.setOnTimeChangedListener(newnewnewnew
TimePicker.OnTimeChangedListener(){
@Override public public public
public voidvoidvoidvoid onTimeChanged(TimePicker view, intintintint hourOfDay, int int int
int minute) { // TODOTODOTODOTODO Auto-generated method stub
/*时间改变事件处理*/
package zyf.Ex_Ctrl_15ME;
/*导入要使用的包*/
import import import
import java.util.Calendar;
import import import
import java.util.Locale;
import import import
import android.app.Activity;
import import import
import android.os.Bundle;
import import import
import android.widget.DatePicker;
import import import
import android.widget.TextView;
import import import
import android.widget.TimePicker;
public public public
public classclassclassclass Ex_Ctrl_15ME extendsextendsextendsextends Activity {
/** Called when the activity is first created. */
/* 定义时间变量:年、月、日、小时、分钟 */
intint
intint my_Year;
int int int
int my_Month;
42
int int int
int my_Hour;
intint
intint my_Minute;
/* 定义 程序用到的UI元素对象:日历设置器、时间设置器、显示时间的TextView */
DatePicker my_datePicker;
TimePicker my_timePicker;
TextView showDate_Time;
/* 定义日历对象,初始化时,用来获取当前时间 */
Calendar my_Calendar;
@Override public public public
public voidvoidvoidvoid onCreate(Bundle savedInstanceState) { /* 从Calendar抽象基类获得实例对象,并设置成中国时区 */
my_Calendar = Calendar.getInstance(Locale.CHINA);
/* 从日历对象中获取当前的:年、月、日、时、分 */
my_Year = my_Calendar.get(Calendar.YEAR);
my_Month = my_Calendar.get(Calendar.MONTH);
my_Day = my_Calendar.get(Calendar.DAY_OF_MONTH);
my_Hour = my_Calendar.get(Calendar.HOUR_OF_DAY);
my_Minute = my_Calendar.get(Calendar.MINUTE);
super super super
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* findViewById()从XML中获取UI元素对象 */
my_datePicker = (DatePicker) findViewById(R.id.my_DatePicker);
my_timePicker = (TimePicker) findViewById(R.id.my_TimePicker);
showDate_Time = (TextView) findViewById(R.id.my_TextView);
/* 把时间设置成24小时制 */
my_timePicker.setIs24HourView(truetruetruetrue);
/* 显示时间 */
loadDate_Time();
/*为日历设置器添加点击事件监听器,处理设置日期事件*/
my_datePicker.init(my_Year, my_Month, my_Day, new
new new
new DatePicker.OnDateChangedListener(){
@Override public public public
public voidvoidvoidvoid onDateChanged(DatePicker view, intintintint year, int
int int
int monthOfYear, intintintint dayOfMonth) { // TODOTODOTODOTODO Auto-generated method stub
/*把设置改动后的日期赋值给我的日期对象*/
43
⑥ 结果
/*为时间设置器添加点击事件监听器,处理设置时间事件*/
my_timePicker.setOnTimeChangedListener(newnewnewnew
TimePicker.OnTimeChangedListener(){
@Override public public public
public voidvoidvoidvoid onTimeChanged(TimePicker view, intintintint hourOfDay, intint
intint minute) { /*把设置改动后的时间赋值给我的时间对象*/
private voidvoidvoidvoid loadDate_Time() {
showDate_Time.setText(newnewnewnew StringBuffer() .append(my_Year).append("/")
.append(FormatString(my_Month + 1))
.append("/").append(FormatString(my_Day)) .append(" ").append(FormatString(my_Hour)) .append(" : ").append(FormatString(my_Minute)));
}
/* 日期时间显示两位数的方法 */
private private private
private String FormatString(intintintint x) { String s = Integer.toString(x);
if return s;
} }
44
DatePickerDialog 与 TimePickerDialog 应用
① 新建工程
② 修改 main.xml 布局,添加两个按钮、一个 TextView
③ DatePickerDialog 的定义与初始化以及显示
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/show_DatePicker"
android:layout_width="150px"
android:layout_height="wrap_content"
android:layout_x="10px"
android:layout_y="10px" android:text="显示日期设置对话框"/>
<Button
android:id="@+id/show_TimePicker"
android:layout_width="150px"
android:layout_height="wrap_content"
android:layout_x="10px"
android:layout_y="70px" android:text="显示时间设置对话框"/>
<TextView
android:id="@+id/my_TextView"
android:layout_width="228px"
android:text="TextView"
android:layout_x="10px"
android:layout_y="180px"
android:layout_height="45px"
android:textSize="20px"/>
</AbsoluteLayout>
/* 定义 程序用到的UI元素对象:日历设置器对话框 */
DatePickerDialog my_datePickerDialog;
/*构造一个DatePickerDialog对象,第一个参数为Context、
* 第二参数为日期修改事件处理监听器、后面为初始化的年月日*/
my_datePickerDialog=newnewnewnew DatePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,
myDateSetListener, my_Year, my_Month, my_Day);
/*显示出日期设置对话框*/
my_datePickerDialog.show();
45
④ DatePickerDialog 的日期修改事件处理
⑤ TimePickerDialog 的定义与初始化以及显示
⑥ TimePickerDialog 的时间修改事件处理
⑦ 修改 mainActivity.java,实现动态显示修改的日期、时间 /*日期改变设置事件监听器*/
private private private
private OnDateSetListener myDateSetListener=newnewnewnew OnDateSetListener(){
@Override public public public
public voidvoidvoidvoid onDateSet(DatePicker view, intintintint year, intintintint monthOfYear, intint
intint dayOfMonth) {
// TODOTODOTODOTODO Auto-generated method stub /*日期改变设置事件处理*/
} };
/* 定义 程序用到的UI元素对象:时间设置器对话框*/
TimePickerDialog my_timePickerDialog;
/*构造一个TimePickerDialog对象,第一个参数为Context、
*第二个参数为时间修改事件监听器、后面两个为初始化时间,
*最后一个boolean类型设置是否为24小时制*/
my_timePickerDialog=newnewnewnew TimePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,
myTimeSetListener, my_Hour, my_Minute, falsefalsefalsefalse);
/*显示出日期设置对话框*/
private OnTimeSetListener myTimeSetListener=newnewnewnew OnTimeSetListener(){
@Override public public public
public voidvoidvoidvoid onTimeSet(TimePicker view, intintintint hourOfDay, intintintint minute) { // TODOTODOTODOTODO Auto-generated method stub
/*时间改变设置事件处理*/
package zyf.Ex_Ctrl_15_B;
/*导入使用的包*/
import import import
import java.util.Calendar;
import import import
import java.util.Locale;
import import import
import android.app.Activity;
import import import
import android.app.DatePickerDialog;
import import import
import android.app.TimePickerDialog;
import import import
import android.app.DatePickerDialog.OnDateSetListener;
import import import
import android.app.TimePickerDialog.OnTimeSetListener;
import import import
import android.os.Bundle;
import import import
import android.view.View;
46
import import import
import android.widget.DatePicker;
import import import
import android.widget.TextView;
import import import
import android.widget.TimePicker;
public public public
public classclassclassclass Ex_Ctrl_15_B extendsextendsextendsextends Activity implementsimplementsimplementsimplements Button.OnClickListener{
/** Called when the activity is first created. */
/* 定义时间变量:年、月、日、小时、分钟 */
int int int
int my_Year;
int int int
int my_Month;
intint
intint my_Day;
int int int
int my_Hour;
intint
intint my_Minute;
/* 定义 程序用到的UI元素对象:日历设置器对话框、时间设置器对话框、
显示时间的TextView、按钮 */
DatePickerDialog my_datePickerDialog;
TimePickerDialog my_timePickerDialog;
TextView showDate_Time;
Button showDatePDialog;
Button showTimePDialog;
/* 定义日历对象,初始化时,用来获取当前时间 */
Calendar my_Calendar;
/*日期改变设置事件监听器*/
private private private
private OnDateSetListener myDateSetListener=newnewnewnew OnDateSetListener(){
@Override public public public
public voidvoidvoidvoid onDateSet(DatePicker view, intintintint year, int
intintint monthOfYear, intintintint dayOfMonth) { // TODOTODOTODOTODO Auto-generated method stub
/*把设置修改后的日期赋值给我的年、月、日变量*/
private OnTimeSetListener myTimeSetListener=newnewnewnew OnTimeSetListener(){
@Override public public public
public voidvoidvoidvoid onTimeSet(TimePicker view, intintintint hourOfDay, intintintint minute) { // TODOTODOTODOTODO Auto-generated method stub
/*把设置修改后的时间赋值给我的时、分变量*/
my_Hour=hourOfDay;
my_Minute=minute;
47
public voidvoidvoidvoid onCreate(Bundle savedInstanceState) { /* 从Calendar抽象基类获得实例对象,并设置成中国时区 */
my_Calendar = Calendar.getInstance(Locale.CHINA);
/* 从日历对象中获取当前的:年、月、日、时、分 */
my_Year = my_Calendar.get(Calendar.YEAR);
my_Month = my_Calendar.get(Calendar.MONTH);
my_Day = my_Calendar.get(Calendar.DAY_OF_MONTH);
my_Hour = my_Calendar.get(Calendar.HOUR_OF_DAY);
my_Minute = my_Calendar.get(Calendar.MINUTE);
super super super
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* findViewById()从XML中获取UI元素对象 */
showDate_Time = (TextView) findViewById(R.id.my_TextView);
showDatePDialog=(Button)findViewById(R.id.show_DatePicker);
showTimePDialog=(Button)findViewById(R.id.show_TimePicker);
/*显示当前时间*/
loadDate_Time();
/*为按钮添加点击事件监听器*/
showDatePDialog.setOnClickListener(thisthisthisthis);
showTimePDialog.setOnClickListener(thisthisthisthis);
}
/* 设置显示日期时间的方法 */
private private private
private voidvoidvoidvoid loadDate_Time() {
// TODOTODOTODOTODO Auto-generated method stub
showDate_Time.setText(newnewnewnew StringBuffer() .append(my_Year).append("/")
.append(FormatString(my_Month + 1))
.append("/").append(FormatString(my_Day)) .append(" ").append(FormatString(my_Hour)) .append(" : ").append(FormatString(my_Minute)));
}
/* 日期时间显示两位数的方法 */
private private private
private String FormatString(intintintint x) { String s = Integer.toString(x);
if return s;
}
48
⑧ 结果 public public public
public voidvoidvoidvoid onClick(View v) {
// TODOTODOTODOTODO Auto-generated method stub switch
switch switch
switch (v.getId()) { case
case case
case R.id.show_DatePicker:
/*显示日期设置对话框的按钮点击事件处理*/{
/*构造一个DatePickerDialog对象,第一个参数为Context、
第二参数为日期修改事件处理监听器、后面为初始化的年月日*/
my_datePickerDialog=newnewnewnew DatePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,
myDateSetListener, my_Year, my_Month, my_Day);
/*显示出日期设置对话框*/
case R.id.show_TimePicker:
/*显示时间设置对话框的按钮点击事件处理*/{
/*构造一个TimePickerDialog对象,第一个参数为Context、第二个参数为时间修改 事件监听器、后面两个为初始化时间,最后一个boolean类型设置是否为24小时制*/
my_timePickerDialog=newnewnewnew TimePickerDialog(Ex_Ctrl_15_B.thisthisthisthis,
myTimeSetListener, my_Hour, my_Minute, falsefalsefalsefalse);
/*显示出日期设置对话框*/