天天看點

Android開發之日期、時間選擇器(DatePicker和TimePicker)的功能和用法DatePicker(日期選擇器)TimePicker(時間選擇器)應用執行個體

日期、時間選擇器(DatePicker和TimePicker)的功能和用法

    DatePicker和TimePicker是兩個比較常用的控件,它們都從FrameLayout派生而來,其中DatePicker用于選擇日期、TimePicker用于選擇時間。

    DatePicker和TimePicker在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)

設定時間調整事件的回調函數。

應用執行個體

選擇日期和時間:

運作效果圖:

Android開發之日期、時間選擇器(DatePicker和TimePicker)的功能和用法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>
           

繼續閱讀