1. 程式人生 > >Android——使用DatePicker和TimePicker顯示當前日期和時間

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

1.DatePicker和TimePicker兩種實現動態輸入日期和時間的功能

2.DatePickerDialog和TimePickerDialog兩種實現動態輸入日期和時間的對話方塊

3.兩組監測日期和時間改變的監聽器

(1)OnDateChangedListener()和OnTimeChangedListener()

當用戶更改了DatePicker裡的年、月、日時,將觸發OnDateChangedListener監聽器的onDateChanged()事件

當用戶更改了TimePicker裡的時、分時,將觸發OnTimeChangedListener監聽器的onTimeChanged()事件

(2)OnDateSetListener()和OnTimeSetListener

當用戶更改了DatePickerDialog裡的年、月、日時,將觸發OnDateSetListener監聽器的onDateSet()事件

當用戶更改了TimePickerDialog裡的時、分時,將觸發OnTimeSetListener監聽器的onTimeSet()事件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <DatePicker
        android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="149dp"/>

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

</LinearLayout>

MainActivity.java
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private TimePicker timePicker;
    private DatePicker datePicker;
    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)+1;
        day = calendar.get(Calendar.DAY_OF_MONTH);
        hour = calendar.get(Calendar.HOUR_OF_DAY);
        minute = calendar.get(Calendar.MINUTE);
        setTitle(year + "-" + month +  "-" + day +  "-" + hour +  "-" + minute);

        datePicker = (DatePicker) findViewById(R.id.datePicker);
        timePicker = (TimePicker) findViewById(R.id.timePicker);

        //datePicker初始化
        datePicker.init(year, month-1, day, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                setTitle(year + "-" + (monthOfYear+1) +  "-" + dayOfMonth);
            }
        });

        //timePicker
        timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                setTitle(hourOfDay + ":" + minute);
            }
        });

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

        //TimePickerDialog
        new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                setTitle(hourOfDay + ":" + minute);
            }
        },hour,minute,true).show();
    }
}

4.注意:DatePciker物件以init()這個方法來指定DatePicker初始的年、月、日及OnDateChangedListener()的事件;而TimePicker物件則是直接以setOnTimeChangedListener()事件來處理時間改變時程式要做的操作。