Android日期時間控件DatePickerDialog和TimePickerDialog


1.DatePickerDialog

在一些萬年歷、日程表等APP上我們經常可以看到日期選擇控件,由於很少有用戶會老老實實的手工輸入日期,所以該控件的作用就是為了控制用戶的輸入格式,在Android中有一個日期選擇控件叫DatePicker,但是該空間並非彈窗模式,而是在頁面上占據一塊區域,這種方式很影響布局的美觀性,所以更多我們是采用彈窗作為日期控件的顯示方式,這個以彈窗方式顯示的日期控件叫做DatePickerDialog,顯示效果如下

 

代碼獲取控件選擇時間的方法如下:

public class MainActivity extends ActionBarActivity implements View.OnClickListener,DatePickerDialog.OnDateSetListener{

    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=(TextView)findViewById(R.id.tv_date);
        findViewById(R.id.btn_date).setOnClickListener(this);
        findViewById(R.id.btn_ok).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if(view.getId()==R.id.btn_date){
            //獲取日歷的一個實例,里面包含了當前的年月日
            Calendar calendar=Calendar.getInstance();
            //構建一個日期對話框,該對話框已經集成了日期選擇器
            //DatePickerDialog的第二個構造參數指定了日期監聽器
            DatePickerDialog dialog=new DatePickerDialog(this,this,
                    calendar.get(Calendar.YEAR),
                    calendar.get(Calendar.MONTH),
                    calendar.get(Calendar.DAY_OF_MONTH));
            //把日期對話框顯示在界面上
            dialog.show();
        }else if(view.getId()==R.id.btn_ok){
            //獲取日期選擇器dp_date設定的年月份
            String desc=String.format("您選擇的日期是%d年%d月%d日",dp_date.getYear(),dp_date.getMonth()+1,dp_date.getDayOfMonth());
            textView.setText(desc);
        }
    }

    //一旦點擊日期對話框上的確定按鈕,就會觸發監聽器的onDateSet方法
    @Override
    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
        //獲取日期對話框設定的年月份
        String desc=String.format("您選擇的日期是%d年%d月%d日",i,i1+1,i2);
        textView.setText(desc);
    }
}

2.TimePickerDialog

同日期選擇器一樣,時間選擇器也有普通控件和彈框控件兩種方式,而且實際開發中也是很少用普通控件(TimePicker),而是常用封裝好的TimePickerDialog,該對話框的用法類似於DatePickerDialog,不同之處有兩個:

(1)構造函數傳的是當前的小時與分鍾,最后一個參數表示是否采用二十四小時制,一般傳true,表示小時數范圍0~23

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

 

代碼獲取選擇的時間的方法如下:

public class MainActivity extends ActionBarActivity implements View.OnClickListener,TimePickerDialog.OnTimeSetListener{

    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=(TextView)findViewById(R.id.tv_date);
        findViewById(R.id.btn_time).setOnClickListener(this);
        findViewById(R.id.btn_ok).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if(view.getId()==R.id.btn_time){
            //獲取日歷的一個實例,里面包含了當前的時分秒
            Calendar calendar=Calendar.getInstance();
            //構建一個時間對話框,該對話框已經集成了時間選擇器
            //TimePickerDialog的第二個構造參數指定了事件監聽器
            TimePickerDialog dialog=new TimePickerDialog(this,this,
                    calendar.get(Calendar.HOUR_OF_DAY),
                    calendar.get(Calendar.MINUTE),
                    true);//true表示使用二十四小時制
            //把時間對話框顯示在界面上
            dialog.show();
        }
    }

    //一旦點擊對話框上的確定按鈕,觸發該方法
    @Override
    public void onTimeSet(TimePicker timePicker, int i, int i1) {
        //獲取時間對話框設定的小時和分鍾數
        String desc=String.format("您選擇的時間是%d時%d分",i,i1);
        textView.setText(desc);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM