1. 程式人生 > >Android 日期控制元件(DatePickerDialog)與時間控制元件(TimePickerDialog)的使用

Android 日期控制元件(DatePickerDialog)與時間控制元件(TimePickerDialog)的使用

在Android中提供日期和時間的控制元件是DataPicker與TimePicker,不過這兩個控制元件並非彈窗模式,而是直接在頁面上佔據一塊區域,並不會自動關閉,因此不適合直接使用,實際開發中用的是已經封裝好的對話方塊DatePickerDialog與TimePickerDialog

執行效果如下圖


DatePickerDialog

DatePickerDialog相當於在AlertDialog上載入了DatePicker,用起來更簡單,只需呼叫建構函式設定一下當前年、月、日,然後呼叫show方法即可彈出日期對話方塊,日期選擇時間有監聽器OnDateSetListener負責相應,在該監聽實現的OnDateSet方法中,開發者能夠獲得使用者選擇的具體日期,這裡需要注意的是OnDateSet方法的月份引數,該引數的起始值不是1而是0,也就是說,一月份對應的是引數0,十二月份對應的是引數11,如果實在不理解,記住這裡的月份值要加1就行了

TimePickerDialog

該對話方塊的用法類似DatePickerDialog,不同之處主要有兩個

(1)      建構函式傳的是當前的小時與分鐘,最後一個引數表示是否採用二十四小時進位制,true表示小時的數值範圍為0~23

(2)      時間選擇監聽器是OnTimeSetListener,對應需要實現的方法是onTimeSet,在該方法中可獲得使用者選好的小時和分鐘

下面是兩個控制元件的使用方法

XML程式碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:gravity="center" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="sxpi.com.myapplication.MainActivity"> <TextView android:id="@+id/dateText" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Date" android:textSize="22sp" /> <TextView android:id="@+id/timeText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Time" android:textSize="22sp" /> </LinearLayout>
程式程式碼
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.icu.util.Calendar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;

public class MainActivity extends AppCompatActivity implements
View.OnClickListener,
        DatePickerDialog.OnDateSetListener,
        TimePickerDialog.OnTimeSetListener{
    TextView dateText,timeText;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dateText=(TextView)findViewById(R.id.dateText);
        timeText=(TextView)findViewById(R.id.timeText);
        dateText.setOnClickListener(this);
        timeText.setOnClickListener(this);
    }

    @Override
public void onClick(View v) {
        if (v.getId()==R.id.dateText){
            Calendar calendar=Calendar.getInstance();
            DatePickerDialog dialog = new DatePickerDialog(this,this,
                    calendar.get(Calendar.YEAR),
                    calendar.get(Calendar.MONTH),
                    calendar.get(Calendar.DAY_OF_MONTH));
            dialog.show();
        }
        if (v.getId()==R.id.timeText){
            Calendar calendar=Calendar.getInstance();
            TimePickerDialog dialog=new TimePickerDialog(this,this,
                    calendar.get(Calendar.HOUR_OF_DAY),
                    calendar.get(Calendar.MINUTE),
                    true);
            dialog.show();
        }
    }

    @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        String desc=String.format("您選擇的時間是%d時%d分",hourOfDay,minute);
        timeText.setText(desc);
    }

    @Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        String desc=String.format("您選擇的日期是%d年%d月%d日",year,month+1,dayOfMonth);
        dateText.setText(desc);
    }

}