標籤:des android c style class blog
日期(DatePicker)、時間(TimePicker)是兩個比較易用的控制項,他們都是從幀布局FrameLayout派生而出的;他們在FrameLayout的基礎上提供了一些方法來擷取目前使用者所選擇的日期和時間;如果程式需要擷取日期和時間,則可以通過為DatePicker添加OnDateChangedListener進行監聽,為TimePicker添加OnTimeChangeListenter進行監聽來實現。
以一個讓使用者選擇日期和時間的例子來展示下他們的功能和用法。
layout/main.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 8 <!-- 顯示使用者輸入日期、時間的控制項 --> 9 <EditText android:id="@+id/show"10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content"12 android:editable="false"13 android:cursorVisible="false"14 android:text="選擇購買本書的具體時間"15 />16 <!-- 定義一個DatePicker組件 -->17 <DatePicker android:id="@+id/datePicker"18 android:layout_width="match_parent" 19 android:layout_height="260dip"20 android:layout_gravity="center_horizontal"21 />22 <!-- 定義一個TimePicker組件 -->23 <TimePicker android:id="@+id/timePicker"24 android:layout_width="match_parent" 25 android:layout_height="160dip"26 android:layout_gravity="center_horizontal"27 />28 29 </LinearLayout>
上面的代碼裡面定義了三個組件:EditText 、日期、時間
主程式:com.example.choosedate.ChooseDate.java
1 package com.example.choosedate; 2 3 import java.util.Calendar; 4 5 import android.support.v7.app.ActionBarActivity; 6 import android.support.v7.app.ActionBar; 7 import android.support.v4.app.Fragment; 8 import android.os.Bundle; 9 import android.view.LayoutInflater;10 import android.view.Menu;11 import android.view.MenuItem;12 import android.view.View;13 import android.view.ViewGroup;14 import android.widget.DatePicker;15 import android.widget.DatePicker.OnDateChangedListener;16 import android.widget.EditText;17 import android.widget.TimePicker;18 import android.widget.TimePicker.OnTimeChangedListener;19 import android.os.Build;20 21 public class ChooseDate extends ActionBarActivity {22 23 //定義5個記錄目前時間的變數24 private int year;25 private int month;26 private int day;27 private int hour;28 private int minute;29 30 @Override31 protected void onCreate(Bundle savedInstanceState) {32 super.onCreate(savedInstanceState);33 setContentView(R.layout.main);34 //獲得組件35 DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker);36 TimePicker timePicker = (android.widget.TimePicker) findViewById(R.id.timePicker);37 38 //擷取當前的年、月、日、小時、分鐘39 Calendar c = Calendar.getInstance();40 year = c.get(Calendar.YEAR);41 month = c.get(Calendar.MONTH);42 day = c.get(Calendar.DAY_OF_MONTH);43 hour = c.get(Calendar.HOUR);44 minute = c.get(Calendar.MINUTE);45 46 //初始化datePicker組件,並指定監聽器47 datePicker.init(year, month, day, new OnDateChangedListener() {48 49 @Override50 public void onDateChanged(DatePicker view, int year, int month,51 int day) {52 ChooseDate.this.year = year;53 ChooseDate.this.month = month;54 ChooseDate.this.day = day;55 56 //顯示當前日期、時間57 showDate(year, month , day , hour, minute);58 }59 });60 61 //初始化timePicker組件指定監聽器62 timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {63 64 @Override65 public void onTimeChanged(TimePicker view, int hour, int minute) {66 ChooseDate.this.hour = hour;67 ChooseDate.this.minute = minute;68 //顯示當前日期、時間69 showDate(year, month , day , hour, minute);70 }71 });72 73 }74 75 //定義在EditText中顯示當前日期、時間的方法76 private void showDate(int year, int month , int day77 , int hour , int minute)78 {79 EditText show = (EditText)findViewById(R.id.show);80 show.setText("日期:" + year + "年" + month + "月"81 + day + "日 " + hour + "時" + minute + "分");82 }83 }
1:選擇前
2:選擇後