在Android系统中,使用DatePicker和TimePicker对象可以实现动态输入日期和时间的功能。本实例联合使用了DatePicker、TimePicker和TextView三个对象,其中用TextView来显示日期和时间,用DatePicker与TimerPicker让用户动态调整日期和时间。当用户调整了DatePicker日期或TimePicker时间时,在TextView中显示的日期或时间会随之改变。
控件TimePicker中的主要方法:
setCurrentMinute(Integer currentMinute):设置当前时间的分钟。
getCurrentMinute():获取当前时间的分钟。
setEnabled(boolean enabled):设置当前视图是否可编辑。
setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener):当时间改变是调用。
控件DatePicker中的主要方法:
getDayOfMonth():获取当前日期。
getMonth():获取当前月。
getYear():获取当前年。
updateDate(int Year,int monthOfYear,int dayOfMonth):更新日期。
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/white"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<DatePicker
android:id="@+id/dPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="20px"
android:layout_y="20px"
>
</DatePicker>
<TimePicker
android:id="@+id/tPicker"
android:layout_width="220px"
android:layout_height="wrap_content"
android:layout_x="20px"
android:layout_y="180px"
>
</TimePicker>
<TextView
android:id="@+id/showTime"
android:layout_width="wrap_content"
android:layout_height="34px"
android:textSize="24sp"
android:layout_x="30px"
android:layout_y="330px"
android:textColor="@drawable/black"
>
</TextView>
</AbsoluteLayout>
package com.EX031;
/* import相关class */
import java.util.Calendar;
import com.EX031.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.DatePicker;
import android.widget.TimePicker;
public class EX031 extends Activity
{
/*声明日期及时间变量*/
private int mYear;
private int mMonth;
private int mDay;
private int mHour;
private int mMinute;
/*声明对象变量*/
TextView tv;
TimePicker tp;
DatePicker dp;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
/*取得目前日期与时间*/
Calendar c=Calendar.getInstance();
mYear=c.get(Calendar.YEAR);
mMonth=c.get(Calendar.MONTH);
mDay=c.get(Calendar.DAY_OF_MONTH);
mHour=c.get(Calendar.HOUR_OF_DAY);
mMinute=c.get(Calendar.MINUTE);
super.onCreate(savedInstanceState);
/* 载入main.xml Layout */
setContentView(R.layout.main);
/*取得TextView对象,并调用updateDisplay()
来设置显示的初始日期时间*/
tv= (TextView) findViewById(R.id.showTime);
updateDisplay();
/*取得DatePicker对象,以init()
设置初始值与onDateChangeListener() */
dp=(DatePicker)findViewById(R.id.dPicker);
dp.init(mYear,mMonth,mDay,new DatePicker.OnDateChangedListener()
{
@Override
public void onDateChanged(DatePicker view,int year,
int monthOfYear,int dayOfMonth)
{
mYear=year;
mMonth= monthOfYear;
mDay=dayOfMonth;
/*调用updateDisplay()来改变显示日期*/
updateDisplay();
}
});
/*取得TimePicker对象,并设置为24小时制显示*/
tp=(TimePicker)findViewById(R.id.tPicker);
tp.setIs24HourView(true);
/*setOnTimeChangedListener,并覆盖onTimeChanged event*/
tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener()
{
@Override
public void onTimeChanged(TimePicker view,
int hourOfDay,
int minute)
{
mHour=hourOfDay;
mMinute=minute;
/*调用updateDisplay()来改变显示时间*/
updateDisplay();
}
});
}
/*设置显示日期时间的方法*/
private void updateDisplay()
{
tv.setText(
new StringBuilder().append(mYear).append("/")
.append(format(mMonth + 1)).append("/")
.append(format(mDay)).append(" ")
.append(format(mHour)).append(":")
.append(format(mMinute))
);
}
/*日期时间显示两位数的方法*/
private String format(int x)
{
String s=""+x;
if(s.length()==1) s="0"+s;
return s;
}
}