android經常使用組件之DatePicker和TimePicker

在android中,DatePicker組件和TimePicker組件分別是日期選擇器和時間選擇器。java

該實例中,當點擊日期選擇器按鈕後,彈出日期選擇框,用戶選擇日期後andoid會將日期顯示到TextView組件中;當點擊時間選擇器按鈕後,彈出時間選擇框,選擇後在相應的TextView組件顯示時間。android

日期選擇框和時間選擇框在建立實例的過程當中,構造方法的參數相似,如下分別介紹:app

一、日期選擇框建立實例以下ide

DatePickerDialog datePicker=new DatePickerDialog(Context context, OnDateSetListener callBack, int year, int  monthOfYear, int dayOfMonth);

其中第二個參數是日期選擇框的監聽方法,經過該方法能夠將選擇日期的年月日返回,後三個參數是彈出日期選擇框的初始日期顯示。佈局

日期選擇框的監聽方法以下,須要覆寫onDateSet()方法。測試

DatePickerDialog.OnDateSetListener date_callback=new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {//arg1~arg3分別是選擇的年月日
            textView_Date.setText(String.format("%s年%s月%s日",format_conver(arg1),format_conver(arg2),format_conver(arg3)));//自定義一個format_conver()方法保證格式輸出 
        }
    };

二、時間選擇框建立實例和日期選擇框過程相似,參數基本相同。this

TimePickerDialog timePicker=new TimePickerDialog(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView);

其中最後一個參數是時間採用12小時制仍是24小時制顯示。code

時間選擇框監聽方法以下,須要重寫onTimeSet()方法。
orm

TimePickerDialog.OnTimeSetListener time_callback=new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker arg0, int arg1, int arg2) {//arg1表示小時,arg2表示分鐘    
            textView_Time.setText(String.format("%s:%s", format_conver(arg1),format_conver(arg2)));//格式輸出
        }
    };


實例測試代碼以下:xml

首先是佈局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="main.test_dt_picker.MainActivity">

    <TextView 
        android:id="@+id/tv1_Date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="@string/tv_Date"/>
    <Button
        android:id="@+id/btn1_Date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_Date" />
    <TextView 
        android:id="@+id/tv2_Time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="@string/tv_Time"/>
    <Button 
        android:id="@+id/btn2_Time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_Time"/>

</LinearLayout>

其次是strings.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Test_DT_Picker</string>
    <string name="action_settings">Settings</string>
    <string name="tv_Date">None</string>
    <string name="tv_Time">None</string>
    <string name="btn_Date">日期選擇器</string>
    <string name="btn_Time">時間選擇器</string>

</resources>

再次是android源碼文件:

package main.test_dt_picker;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;

public class MainActivity extends ActionBarActivity implements OnClickListener{

    private Button button_Date=null,button_Time=null;
    private TextView textView_Date=null,textView_Time=null;
    private DatePickerDialog datePicker=null;
    private TimePickerDialog timePicker=null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button_Date=(Button)findViewById(R.id.btn1_Date);
        button_Time=(Button)findViewById(R.id.btn2_Time);
        textView_Date=(TextView)findViewById(R.id.tv1_Date);
        textView_Time=(TextView)findViewById(R.id.tv2_Time);
        
        button_Date.setOnClickListener(MainActivity.this);
        button_Time.setOnClickListener(MainActivity.this);
        
        datePicker=new DatePickerDialog(MainActivity.this, date_callback, 2012, 6, 18);
        
        timePicker=new TimePickerDialog(MainActivity.this, time_callback, 10, 5, true);   
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        int btn_id=arg0.getId();
        switch (btn_id) {
        case R.id.btn1_Date: datePicker.show();break;
        case R.id.btn2_Time: timePicker.show();break;
        default: break;
        }
    }
    
    DatePickerDialog.OnDateSetListener date_callback=new DatePickerDialog.OnDateSetListener() {
        
        @Override
        public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
            
            textView_Date.setText(String.format("%s年%s月%s日",format_conver(arg1),format_conver(arg2),format_conver(arg3)));
            
        }
    };
    
    TimePickerDialog.OnTimeSetListener time_callback=new TimePickerDialog.OnTimeSetListener() {
        
        @Override
        public void onTimeSet(TimePicker arg0, int arg1, int arg2) {
            
            textView_Time.setText(String.format("%s:%s", format_conver(arg1),format_conver(arg2)));
            
        }
    };
    
    public String format_conver(int s){//該方法爲了輸出一位數時保證前面加一個0,使之與實現十位數對齊,好比時間是12:5,使用該方法後輸出爲12:05
        return s>=10?""+s:"0"+s;
    }
}

最後是三張測試圖片:

第一張啓動後原圖:

點擊日期選擇框按鈕後彈出的日期選擇框:

最後測試圖片:

相關文章
相關標籤/搜索