Android入門之時間日期控件DatePicker(Dialog)、TimePicker(Dialog)、DigitalClock和AnalogClock
- 預覽圖
-
- DatePicker
-
- UI代碼
- Java代碼
- TimePicker
-
- UI代碼
- Java代碼
- TimePickerDialog
-
- Java代碼
- DatePickerDialog
-
- Java代碼
- 其餘控件DigitalClock,AnalogClock
-
- UI代碼
- 其餘資料
本文模式為安卓10.0,部分控件根據版本有較大變動
預覽圖

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>
兩種模式預設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>
兩種模式: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
- 點選button後出現的TimePickerDialog,Toast響應修改後的時間
- 直接出現的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顯示模拟時鐘,不會顯示目前秒數。
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>
其餘資料
詳細時間日期控件的常用方法和屬性
(部落格作者:依舊淡然)