天天看點

Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖

Android入門之時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock

  • 預覽圖
    • DatePicker
      • UI代碼
      • Java代碼
    • TimePicker
      • UI代碼
      • Java代碼
    • TimePickerDialog
      • Java代碼
    • DatePickerDialog
      • Java代碼
    • 其餘控件DigitalClock,AnalogClock
      • UI代碼
    • 其餘資料

本文模式為安卓10.0,部分控件根據版本有較大變動

預覽圖

Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖

DatePicker

更改日期後Toast點選響應

UI代碼

//兩種月曆模式

        <DatePicker      //預設的calendar類
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:datePickerMode="calendar"
         ></DatePicker>
         
        <DatePicker       //spinner類
            android:layout_marginTop="70dp"
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:datePickerMode="spinner"//安卓5.0之後要加上這句才能選擇spinner
            android:calendarViewShown="false"
         ></DatePicker>
           
Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖
Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖

兩種模式預設calendar(左)和spinner(右)

注意:

在安卓5.0之後,用 android:datePickerMode=“spinner” 選擇spinner模式

android:calendarViewShown=“false” 也需要,沒有這句安卓10.0會導緻兩個模式的月曆同時出

android:spinnersShown=“true” 已經失效

Java代碼

DatePicker datePicker = findViewById(R.id.date);//綁定控件
        //擷取目前年月日
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        datePicker.init(year,month,day,this);
    }
    //更改日期後的Toast響應
    public void onDateChanged(DatePicker view, int year, int month, int day){
        Toast.makeText(MainActivity.this, year + "年 "+ month +"月 "+day + "日",Toast.LENGTH_SHORT).show();
    }

           

TimePicker

TimePicker内容與DatePicker大緻相同

UI代碼

<TimePicker
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:timePickerMode="clock"//兩種模式,另一種“spinner”
            ></TimePicker>
           
Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖
Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖

兩種模式:spinner(右)和預設clock(左)

Java代碼

//Timepicker
        final TimePicker time = (TimePicker) findViewById(R.id.time);//綁定控件
        time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            Calendar a = Calendar.getInstance();
            final int hour = a.get(Calendar.HOUR_OF_DAY);
            final int minute = a.get(Calendar.MINUTE);
            @Override
            public void onTimeChanged(TimePicker timePicker, int i, int i1) {
                time.setIs24HourView(true);   //24小時制 
                Toast.makeText(MainActivity.this, i + "時" + i1 + "分",Toast.LENGTH_SHORT).show();
            }
        });
 //常用屬性
//        picker.setIs24HourView(true);
//        picker.is24HourView();//擷取是否為24小時
//        Calendar calendar = Calendar.getInstance();
//        picker.setCurrentHour(Calendar.HOUR_OF_DAY);//建立目前時間
           

TimePickerDialog

  1. 點選button後出現的TimePickerDialog,Toast響應修改後的時間
  2. 直接出現的TimePickerDialog

Java代碼

UI代碼就隻有一個按鈕

//前面還有private Button b1;
//點選按鈕b1出現的TimePickerDialog
        Button b1 = findViewById(R.id.b1);
        b1.setOnClickListener(new View.OnClickListener() {
        	//得到目前的時間
            Calendar a = Calendar.getInstance();
            final int hour = a.get(Calendar.HOUR_OF_DAY);
            final int minute = a.get(Calendar.MINUTE);
            @Override
            public void onClick(View view) {
            //點進去顯示目前時間
                Toast.makeText(MainActivity.this,hour + "時" + minute + "分",Toast.LENGTH_SHORT).show();
                
                TimePickerDialog.OnTimeSetListener tcListener = new TimePickerDialog.OnTimeSetListener() {
                    @RequiresApi(api = Build.VERSION_CODES.M)
                    @Override
                    public void onTimeSet(TimePicker timePicker, int i, int i1) {
                    	//獲得修改後的時間
                        a.set(Calendar.HOUR_OF_DAY, hour);
                        a.set(Calendar.MINUTE, minute);
                        Toast.makeText(MainActivity.this, timePicker.getHour() + "時" + timePicker.getMinute()+ "分",Toast.LENGTH_SHORT).show();/顯示修改後的時間
                    }
                };
                TimePickerDialog tpDlg = new TimePickerDialog(view.getContext(), tcListener, hour, minute, false);
                tpDlg.show();
            }
        });
/*直接出現的TimePickerDialog
        new TimePickerDialog(this, AlertDialog.THEME_HOLO_LIGHT,new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                Toast.makeText(MainActivity.this,hourOfDay + "時" + minute + "分",Toast.LENGTH_SHORT).show();
            }
        }, 0, 0, false).show();
*/
           

DatePickerDialog

代碼響應與TimePickerDialog無較大差别

Java代碼

UI代碼就隻有一個按鈕

//前面還有private Button b2;
        Button b2 = findViewById(R.id.b2);
        b2.setOnClickListener(new View.OnClickListener() {
            Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);
//            @Override
            public void onClick(final View view) {

                DatePickerDialog dpDlg = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                        year = i;
                        month = i1;
                        day = i2;
                        Toast.makeText(MainActivity.this, i + "年 "+ (i1 + 1) +"月 "+ i2 + "日",Toast.LENGTH_SHORT).show();
                    }
                },year,month,day);
                dpDlg.show();
            }
        });
        
                //第二種方法
//               DatePickerDialog.OnDateSetListener DL = new DatePickerDialog.OnDateSetListener() {
//                   @Override
//                   public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
//
//                       c.set(Calendar.YEAR, year);
//                       c.set(Calendar.MONTH, month);
//                       c.set(Calendar.DAY_OF_MONTH, day);
//                       Toast.makeText(MainActivity.this, i + "年 "+ i1 +"月 "+ i2 + "日",Toast.LENGTH_SHORT).show();
//                   }
//               };
//               DatePickerDialog dpDlg1 = new DatePickerDialog(view.getContext(),DL, year, month, day);
//               dpDlg1.show();
           

其餘控件DigitalClock,AnalogClock

DigitalClock顯示數字時鐘,可以顯示目前的秒數;AnalogClock顯示模拟時鐘,不會顯示目前秒數。

Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖
Android入門之基礎時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock預覽圖

AnalogClock(左)和DigitalClock(右)

UI代碼

<AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="#FF3E96"
        android:textColor="#FCFCFC"
        ></AnalogClock>
        
    <DigitalClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="#FF3E96"
        android:textColor="#FCFCFC"
        android:textSize="50dp"
        ></DigitalClock>
           

其餘資料

詳細時間日期控件的常用方法和屬性

(部落格作者:依舊淡然)

繼續閱讀