首页 > 代码库 > Android开发之日期、时间选择器(DatePicker和TimePicker)的功能和用法

Android开发之日期、时间选择器(DatePicker和TimePicker)的功能和用法

日期、时间选择器(DatePicker和TimePicker)的功能和用法

    DatePickerTimePicker是两个比较常用的控件,它们都从FrameLayout派生而来,其中DatePicker用于选择日期、TimePicker用于选择时间。

    DatePickerTimePicker在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期、时间;开发者可以通过为DatePicker添加OnDateChangedListener、为TimePicker添加OnTimeChangedListener监听器进行监听来获取用户选择的日期和时间。

DatePicker(日期选择器)


结构:

<pre name="code" class="html">java.lang.Object
   ? 	android.view.View
  	   ? 	android.view.ViewGroup
  	  	   ? 	android.widget.FrameLayout
  	  	  	   ? 	android.widget.DatePicker

概述:

       一个选择年月日的日历布局视图,对于对话框视图,参见 DatePickerDialog.

公共方法: 

Public Methods

int

getDayOfMonth()

获取选择的天数

int

getMonth()

获取选择的月份

int

getYear()

  获取选择的年份

void

init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)

初始化年月日

void

setEnabled(boolean enabled)

设置视图的启用状态

void

updateDate(int year, int monthOfYear, int dayOfMonth)

更新日期

DatePicker支持的XML属性:

XML属性

说明

android:calendarViewShown

设置该日期选择器是否显示ClendarView组件

android:endYear

设置该日期选择器允许选择的最后一年

android:startYear

设置该日期选择器允许选择的第一一年

android:maxDate

设置该日期选择器允许选择的最大日期。以mm/dd/yyyy格式指定最大日期

android:minDate

设置该日期选择器允许选择的最小日期。以mm/dd/yyyy格式指定最小日期

android:spinnersShown

设置该日期选择器是否显示Spinner日期选择组件

 

TimePicker(时间选择器)


结构:

<pre name="code" class="html">ava.lang.Object
   ? 	android.view.View
  	   ? 	android.view.ViewGroup
  	  	   ? 	android.widget.FrameLayout
  	  	  	   ? 	android.widget.TimePicker

      概述:

        用于选择一天中时间的视图,支持 24小时及上午/下午模式。小时,分钟及上午/下午(如果可用)都可以用垂直滚动条来控制。用键盘来输入小时。两个数的小时数可以通过输入两个数字来实现,例如在一定时间内输入‘1’和‘2’即选择了12点。分钟能显示输入的单个数字。在AM/PM模式下,用户可以输入‘a‘, ‘A"或 ‘p‘, ‘P‘来选取。对于对话框视图,参见TimePickerDialog

公共方法:

Public Methods

 

int

getBaseline()

返回窗口空间的文本基准线到其顶边界的偏移量。如果这个部件不支持基准线对齐,

这个方法返回-1/。

Integer

getCurrentHour()

 获取当前时间的小时部分。 返回值当前小时(0-23)

Integer

getCurrentMinute()

获取当前时间的分钟部分

boolean

is24HourView()

获取当前系统设置是否是24小时制。 如果是24小时制返回true,否则返回false。

void

setCurrentHour(Integer currentHour)

设置当前小时

void

setCurrentMinute(Integer currentMinute)

设置当前分钟(0-59)

void

setEnabled(boolean enabled)

设置可用的视图状态。可用的视图状态的解释在子类中改变。

void

setIs24HourView(Boolean is24HourView)

设置是24小时还是上午/下午制

void

setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener)

设置时间调整事件的回调函数。

 

应用实例


选择日期和时间:

运行效果图:

日期、时间选择器(DatePicker和TimePicker)的功能和用法

程序代码:

package com.jph.choosedae;

import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
import android.widget.Toast;

/**
 * Description:
 * <br/>选择日期时间
 * <br/>本实例通过DatePicker(时间选择器)和
 * <br/>TimePicker(日期选择器)来提供用户选择日期和时间
 * <br/>为了获取选择的日期程序为DatePicker注册了OnDateChangedListener
 * <br/>监听器,为了获取选择的时间程序为TimePicker注册OnTimeChangedListener
 * <br/>监听器
 * @author jph
 * Date:2014.20.57
 */
public class ChooseDate extends Activity
{
	// 定义5个记录当前时间的变量
	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.main);
		DatePicker datePicker = (DatePicker)
			findViewById(R.id.datePicker);
		TimePicker timePicker = (TimePicker) 
			findViewById(R.id.timePicker);
		// 获取当前的年、月、日、小时、分钟
		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, new OnDateChangedListener()
		{

			@Override
			public void onDateChanged(DatePicker arg0, int year
					, int month, int day)
			{
				ChooseDate.this.year = year;
				ChooseDate.this.month = month;
				ChooseDate.this.day = day;
				// 显示当前日期、时间
				showDate(year, month, day, hour, minute);
				Toast.makeText(ChooseDate.this,"您选择的日期:"+year+"年  "
				+month+"月  "+day+"日", Toast.LENGTH_SHORT).show();
			}
		});
		// 为TimePicker指定监听器
		timePicker.setOnTimeChangedListener(new OnTimeChangedListener()
		{

			@Override
			public void onTimeChanged(TimePicker view
					, int hourOfDay, int minute)
			{
				ChooseDate.this.hour = hourOfDay;
				ChooseDate.this.minute = minute;
				// 显示当前日期、时间
				showDate(year, month, day, hour, minute);
				Toast.makeText(ChooseDate.this,"您选择的时间:"+hourOfDay+"时  "
						+minute+"分", Toast.LENGTH_SHORT).show();
//				
			}
		});
	}

	// 定义在EditText中显示当前日期、时间的方法
	private void showDate(int year, int month
			, int day, int hour, int minute)
	{
		EditText show = (EditText) findViewById(R.id.show);
		show.setText("您选择的日期和时间为:" + year + "年" 
				+ (month + 1) + "月" + day + "日  "
				+ hour + "时" + minute + "分");
	}
}

xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
	
<!-- 显示用户输入日期、时间的控件 -->
<EditText android:id="@+id/show"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:editable="false"
	android:cursorVisible="false"
	/>	
<TextView  
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="请选择日期和时间"
	/>
<!-- 定义一个DatePicker组件 -->
<DatePicker android:id="@+id/datePicker"
	android:layout_width="wrap_content" 
	android:layout_height="200dp"
	android:layout_gravity="center_horizontal"
	android:startYear="2000"
	android:endYear="2050"
	android:calendarViewShown="true"
	android:spinnersShown="true"
	/>
<!-- 定义一个TimePicker组件 -->
<TimePicker android:id="@+id/timePicker"
	android:layout_width="wrap_content" 
	android:layout_height="100dp"
	android:layout_gravity="center_horizontal"
	/>
</LinearLayout>