Android 使用DatePicker以及TimePicker顯示當前日期和時間

課程內容
1.介紹DatePicker和TimePicker兩種實現動態輸入日期和事件的功能
2.介紹DatePickerDialog和TimePickerDialog來年耕種實現動態輸入日期和事件的對話框
3.介紹兩組針對檢測日期時間改變的監聽器包含:
 onDateChangedListener和OnTimeChangedListener
 onDateSetListener和OnTimeSetListener
當用戶更改了DatePicker裏的年、月、日時,將出發OnDateCHangedListener監聽器的onDateChange()事件
當用戶更改了TimePicker裏的時、分時,將出發OnTimeCHangedListener監聽器的onTimeChanged事件
當用戶更改了DatePickerDialog裏的年、月、日時,將出發OnDateSetListener監聽器的onDateSet()事件
當用戶更改了TimePickerDialog裏的時、分時,將出發OnTimeSetListener監聽器的onTimeSet()事件java

需求功能
默認在標題欄中展現當前日期和事件,經過監聽器去獲取用戶選擇日期或事件的結果,並將變動的日期或時間展現在標題欄上
經過setTitle()設置標題。android

DatePicker實時更改年、月、日:app

        datePicker = (DatePicker) findViewById(R.id.datePicker1);
        datePicker.init(year, month, day, new OnDateChangedListener() {

            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                setTitle(String.format("%d-%02d-%02d", year, monthOfYear+1, dayOfMonth));
            }
            
        });

TimePicker實時更新時、分:ide

        timePicker = (TimePicker) findViewById(R.id.timePicker1);
        timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
            
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                setTitle(String.format("%02d:%02d", hourOfDay, minute));
            }
        });

新建一個DatePickerDialog用於展現:this

        new DatePickerDialog(this, new OnDateSetListener() {
            
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                setTitle(String.format("%d-%02d-%02d", year, monthOfYear+1, dayOfMonth));
            }
        }, year, month, day).show();

新建一個TimePickerDialog用於展現:spa

        new TimePickerDialog(this, new OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                setTitle(String.format("%02d:%02d", hourOfDay, minute));
            }
            
        }, hour, minute, true).show();
package com.example.datepickertimepicker;

import java.util.Calendar;

import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class MainActivity extends ActionBarActivity {
    
    private DatePicker datePicker;
    private TimePicker timePicker;
    private Calendar calendar;
    private int year;
    private int month;
    private int day;
    private int hour;
    private int minute;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        calendar = Calendar.getInstance();
        year = calendar.get(Calendar.YEAR);
        month = calendar.get(Calendar.MONTH);
        day = calendar.get(Calendar.DAY_OF_MONTH);
        hour = calendar.get(Calendar.HOUR_OF_DAY);
        minute = calendar.get(Calendar.MINUTE);
        setTitle(String.format("%d-%02d-%02d %02d:%02d", year, month+1, day, hour, minute));
        
        datePicker = (DatePicker) findViewById(R.id.datePicker1);
        datePicker.init(year, month, day, new OnDateChangedListener() {

            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                setTitle(String.format("%d-%02d-%02d", year, monthOfYear+1, dayOfMonth));
            }
            
        });
        
        timePicker = (TimePicker) findViewById(R.id.timePicker1);
        timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
            
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                setTitle(String.format("%02d:%02d", hourOfDay, minute));
            }
        });
        
        new DatePickerDialog(this, new OnDateSetListener() {
            
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                setTitle(String.format("%d-%02d-%02d", year, monthOfYear+1, dayOfMonth));
            }
        }, year, month, day).show();
        
        new TimePickerDialog(this, new OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                setTitle(String.format("%02d:%02d", hourOfDay, minute));
            }
            
        }, hour, minute, true).show();
    }
}
MainActivity.java
<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/datePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TimePicker
        android:id="@+id/timePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
activity_main.xml

注意事項:
1.DatePicker對象以init()這個方法來指定DatePicker初始的年、月、日及OnDateCHangedListener()的事件;而TimePicker對象則是直接以setOnTimeCHangedListener()事件來處理事件改變程序要作的操做。
2.DatePickerDialog與TimePickerDialog與前面這兩種類型的對象最大的差異在於DatePicker與TImePicker是直接顯示在屏幕畫面上,而DatePickerDialog與TimePickerDialog對象則是以彈出Dialog的方式來顯示。code

效果:orm

         

相關文章
相關標籤/搜索