Android API中提供的DatePicter和TimePicker两种对象实现动态输入日期与时间的功能。
首先看下简单的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<DatePicker
android:id="@+id/dPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TimePicker
android:id="@+id/tPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/showTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp" />
</LinearLayout>
Activity的逻辑代码:
package com.test.androidtest;
import java.text.Format;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.DatePicker;
import android.widget.MultiAutoCompleteTextView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
public class MainActivity extends Activity {
private int mYear;
private int mMonth;
private int mDay;
private int mHour;
private int mMinute;
TextView tView;
TimePicker tPicker;
DatePicker dPicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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);
tView = (TextView)findViewById(R.id.showTime);
//显示时间
updateDisplay();
dPicker = (DatePicker)findViewById(R.id.dPicker);
dPicker.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();
}
});
tPicker = (TimePicker)findViewById(R.id.tPicker);
tPicker.setIs24HourView(true);
tPicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute= minute;
updateDisplay();
}
});
}
protected void updateDisplay() {
tView.setText(new StringBuilder().append(mYear).append("/")
.append(Format(mMonth+1)).append("/")
.append(Format(mDay)).append(" ")
.append(Format(mHour)).append(":")
.append(Format(mMinute)));
}
private Object Format(int i) {
String string= ""+i;
if (string.length() ==1) {
string = "0"+string;
}
return string;
}
}
android还提供了DatePickerDialog与TimepickerDialog来实现动态修改日期时间的功能,从对象的名字上就可以看出,它们是以dialog的形式出现的。
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
//这里放更新日期的方法
}
}, mYear, mMonth, mDay).show();
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//这里放更新时间的方法
}
}, mHour, mMinute, true).show();