Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android顯示時間和日期的控件的使用總結

Android顯示時間和日期的控件的使用總結

編輯:關於Android編程

相關類的認識
Picker(DatePicker、TimerPicker、NumberPicker)
其中DatePicker和TimerPicker都有窗口的形式顯示日期和時間,再返回數據。

下面分別介紹這幾種時間類的使用方法。

一.DatePicker日期選擇類的使用

DatePicker常用的XML屬性

XML屬性 描述 android:calendarViewShown 設置該日期選擇是否顯示CalendarView組件。 android:endYear 設置日期選擇器允許選擇的最後一年。 android:maxDate 設置該日期選擇器的最大日期。以mm/dd/yyyy格式指定最大日期。 android:minDate 設置該日期選擇器的最小日期。以mm/dd/yyyy格式指定最小日期。 android:spinnersShown 設置該日期選擇器是否顯示Spinner日期選擇組件。 android:startYear 設置日期選擇器允許選擇的第一年。


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

二.TimePicker日期選擇類的使用


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

下面是日期選擇類和時間選擇類的一個使用示例:

(一)布局文件設計



    

    

    

    

    

    

(二)主代碼設計

package com.example.timer;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class MainActivity extends Activity {

    int year = 0;
    int monthOfYear = 0;
    int dayOfMonth = 0;
    int minute = 0;
    int houre = 0;
    TextView showDate = null;
    TextView showtime = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        showDate(year, monthOfYear + 1, dayOfMonth);
        showTime(houre, minute);
    }

    private void initView() {
        // 日期控件對象
        DatePicker date = (DatePicker) findViewById(R.id.main_dp);
        // 獲得日歷對象
        Calendar c = Calendar.getInstance();
        // 獲取當前年份
        year = c.get(Calendar.YEAR);
        // 獲取當前月份
        monthOfYear = c.get(Calendar.MONTH);
        // 獲取當前月份的天數
        dayOfMonth = c.get(Calendar.DAY_OF_MONTH);
        // 獲取當前的小時數
        houre = c.get(Calendar.HOUR_OF_DAY);
        // 獲取當前的分鐘數
        minute = c.get(Calendar.MINUTE);

        // 時間顯示的文本對象
        showDate = (TextView) findViewById(R.id.main_tv_showdate);

        // 為日期設置監聽事件
        date.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener() {

            @Override
            public void onDateChanged(DatePicker view, int year,
                    int monthOfYear, int dayOfMonth) {
                MainActivity.this.year = year;
                MainActivity.this.monthOfYear = monthOfYear;
                MainActivity.this.dayOfMonth = dayOfMonth;
                showDate(year, monthOfYear + 1, dayOfMonth);

            }

        });

        // 顯示時間的文本控件
        showtime = (TextView) findViewById(R.id.main_tv_showtime);

        // 時間顯示的控件
        TimePicker time = (TimePicker) findViewById(R.id.main_tp_showTime);
        // 為時間控件設置監聽事件
        time.setOnTimeChangedListener(new OnTimeChangedListener() {

            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                showTime(hourOfDay, minute);
            }
        });

    }

        //顯示日期的方法
    private void showDate(int year, int monthOfYear, int dayOfMonth) {
        showDate.setText("日期是:" + year + "年" + monthOfYear + "月" + dayOfMonth
                + "日");

    }

    //顯示時間的方法
    private void showTime(int houre2, int minute2) {
        showtime.setText("時間是:" + houre2 + "時" + minute2 + "分");

    }

}


運行後顯示的結果:

Time、DatePicker

可以從運行結果直接看到,控件的顯示,可以上下拖動選擇自己想要的日期和時間,但是,我們看到這樣做是比較占屏幕空間的。所以後面介紹的用窗口選擇日期和時間是比較常用的。

三. DatePickerDialog

DatePickerDialog和TimePickerDialog,與DatePicker和TimePicker,最大的區別是DatePicker和TimePicker是直接顯示在屏幕畫面上的,而DatePickerDialog和TimePickerDialog對象則是以彈出Dialog的方式來顯示。

創建DatePickerDialog的語法如下:

DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

參數說明:
context:當前上下文;
callback:OnDateSetListener日期改變監聽器;
year:初始化的年;
monthOfYear:初始化的月(從0開始計數,所以實際應用時需要加1);
dayOfMonth:初始化的日;
當用戶更改了DatePickerDialog裡的年、月、日時,將觸發OnDateSetListener監聽器的onDateSet()事件。

四. TimePickerDialog

創建TimePickerDialog的語法如下:

TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener listener, int hourOfDay, 
int minute, boolean is24HourView)

參數說明:
context:當前上下文;
listener:時間改變監聽器;
hourOfDay:初始化的小時;
minute:初始化的分鐘;
is24HourView:是否以24小時顯示時間;
當用戶更改了TimePickerDialog裡的時、分時,將觸發OnTimeSetListener監聽器的onTimeSet()事件。

下面是日期和時間以窗口的形式顯示的示例:

(一)布局文件設計


(二)代碼設計

package com.java.pickerDialog;
import com.example.timer.R;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;

public class PickerDialog extends Activity {

    TextView tv_date = null;
    TextView tv_time = null;
    int year = 2016;
    int month = 10;
    int day = 8;
    int houre = 15;
    int minute = 20;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pickerdialog);
        initView();
    }

    private void initView() {
        tv_date = (TextView) findViewById(R.id.dialog_tv_date);
        tv_time = (TextView) findViewById(R.id.dialog_tv_time);
    }

    // 點擊事件,湖區日期
    public void getDate(View v) {

        new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                PickerDialog.this.year = year;
                month = monthOfYear;
                day = dayOfMonth;

            }
        }, 2016, 10, 8).show();
        showDate();
    }

    // 點擊事件,湖區日期
    public void getTime(View v) {
        new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                houre = hourOfDay;
                PickerDialog.this.minute = minute;
            }
        }, 15, 20, true).show();
        showTime();
    }

    // 顯示選擇日期
    private void showDate() {
        tv_date.setText("你選擇的日期是:" + year + "年" + month + "月" + day + "日");
    }

    // 顯示選擇日期
    private void showTime() {
        tv_time.setText("你選擇的時間是:" + houre + "時" + minute + "分");
    }

}


運行後顯示的界面:

對話框時間類1

點擊日期按鈕後

點擊日期類

點擊時間按鈕後

點擊時間類

之後顯示的效果

時間類顯示後結果vc+zo7z7tcSho7b4x9LTw7unzOXR6dKyysexyL3PusO1xKGjPGJyIC8+DQpbcGFnZV08L3A+DQo8aDEgaWQ9"五-numberpicker">五. NumberPicker

NumberPicker是數值選擇器,用於讓用戶輸入數值,用戶既可以通過鍵盤輸入數值,也可以通過拖動來選擇數值。

NumberPicker的常用方法如下:

方法 描述 setMinValue(int minVal) 設置該組件支持的最小值。 setMaxValue(int maxVal) 設置該組件支持的最大值。 setValue(int value) 設置該組件的當前值。 getMaxValue() 獲得該組件設置的最大值。 getMinValue() 獲得該組件設置的最小值。 getValue() 獲得當前組件顯示的值。 setValue(int value) 設置當前組件顯示的值。

使用NumberPicker讓用戶選擇年月日的示例:

(一)布局文件設計




    

        

            

            

            
        

        

            

            

            
        
    

    

(二)java代碼的設計

package com.java.timepicker;
import android.app.Activity;
import android.os.Bundle;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;
import android.widget.TextView;

import com.example.timer.R;

public class NumberPickerActivity extends Activity {

    NumberPicker num_year = null;
    NumberPicker num_month = null;
    NumberPicker num_day = null;
    TextView tv_year = null;
    int year = 2016;
    int month = 10;
    int day = 8;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numberpicker);
        initView();

    }

    private void initView() {
        // 實例化NumberPicker對象
        num_year = (NumberPicker) findViewById(R.id.number_np_year);
        num_month = (NumberPicker) findViewById(R.id.number_np_month);
        num_day = (NumberPicker) findViewById(R.id.number_np_day);
        // 實例化顯示年份的文本對象F
        tv_year = (TextView) findViewById(R.id.number_tv_year);
        initYear();
        initMonth();
        initDay();
    }

    private void initYear() {
        // 設置NumberPicker對象的相關屬性
        num_year.setMaxValue(100000);
        num_year.setMinValue(1900);
        num_year.setValue(2016);
        // 為NumberPicker設置監聽事件
        num_year.setOnValueChangedListener(new OnValueChangeListener() {

            @Override
            public void onValueChange(NumberPicker picker, int oldVal,
                    int newVal) {
                year = newVal;
                showDate();
            }
        });

    }

    private void initMonth() {
        // 設置NumberPicker對象的相關屬性
        num_month.setMaxValue(12);
        num_month.setMinValue(1);
        num_month.setValue(10);
        // 為NumberPicker設置監聽事件
        num_month.setOnValueChangedListener(new OnValueChangeListener() {

            @Override
            public void onValueChange(NumberPicker picker, int oldVal,
                    int newVal) {
                month = newVal;
                showDate();
            }
        });

    }

    private void initDay() {
        // 設置NumberPicker對象的相關屬性
        num_day.setMaxValue(31);
        num_day.setMinValue(1);
        num_day.setValue(8);
        // 為NumberPicker設置監聽事件
        num_day.setOnValueChangedListener(new OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal,
                    int newVal) {
                day = newVal;
                showDate();
            }
        });

    }

    void showDate() {
        tv_year.setText("你選擇的日期是:" + year + "年" + month + "月" + day + "日");

    }

}


程序運行後的效果:

NumberPicker運行後


選擇日期之後的效果

NumberPicker選擇後

可以看到同樣可以顯示出日期。
這裡是用來三個NumberPicker控件才能有這個效果,如果要具體時間要多加兩個NumberPicker控件,就可以了。
但是這樣做相對來的要出來的數據還是比較多一點的。


以上就是時間控件的使用的方法和簡單使用,總的來的還是以窗口的形式來顯示還是比較符合設計思想的,也是我們要重點掌握的。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved