Android 中的时间日期控件
16lz
2021-01-23
TextClock
以字符串的形式显示当前时间
更多方法及属性请查看官方API
API17+
在布局文件中添加
TextClock的XML属性:
- android:format12Hour 指定用于在12小时模式下显示时间和/或日期
- android:format24Hour 指定用于在24小时模式下显示时间和/或日期
- android:timeZone 指定要使用的时区
DatePicker
提供一个选择日期的窗口小部件
更多方法及属性请查看官方API
获取系统日期和时间的方法
// 获取日历对象Calendar calendar = Calendar.getInstance();// 获取当前对应的年、月、日的信息year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH) + 1;day = calendar.get(Calendar.DAY_OF_MONTH);// 获取当前时间信息hour=calendar.get(Calendar.HOUR_OF_DAY);minute=calendar.get(Calendar.MINUTE);
在布局文件中添加
XML属性:
- android:calendarTextColor 日历列表中的文本颜色。
- android:calendarViewShown=”true|fase” 设置该DatePicker是否显示CalendarView组件,只对spinner模式下有效。
- android:datePickerMode=”calendar|spinner” 定义DatePicker小部件的外观,该属性在API21之后添加
- android:dayOfWeekBackground 日期的背景色
- android:dayOfWeekTextAppearance 日期的文本颜色
- android:firstDayOfWeek=”integer” 基于日历的一周第一天
- android:headerBackground 表头选择的日期的背景
- android:headerDayOfMonthTextAppearance 表头天的文本外观
- android:headerMonthTextAppearance 表头月的文本外观
- android:headerYearTextAppearance 表头年的文本外观
- android:maxDate=”string using \\” 通过以mm / dd / yyyy格式此日历视图中显示的最大的日期。
- android:minDate=”string using \\” 通过以mm / dd / yyyy格式此日历视图中示出的最小的日期。
- android:spinnersShown=”true|false” 设置该日期选择器是否显示Spinner日期选择组件,只在spinner模式下有效
- android:startYear=”integer” 设置日期选择器允许选择的第一年,如“1940年”。
- android:endYear=”integer” 设置日期选择器允许选择的最后一年。
- android:yearListItemTextAppearance 列表中年的文本外观
- android:yearListSelectorColor 列表中年的选择圆圈的颜色
代码中:
//1.findViewByIdDatePicker datePicker = (DatePicker) findViewById(R.id.dp_pro);//2.使用init()方法初始化DatePicker在刷新Spinner之前显示的日期;并设置OnDateChangedListener,监听器可以为空。这里使用activity implements OnDateChangedListenerdatePicker.init(year,monthOfYear,dayOfMonth,this);//设置OnDateChangedListener后重写的方法,修改DatePicker里的年、月、日时触发@Overridepublic void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { if (view.getId()==R.id.dp_pro){ datePro=year+"-"+(monthOfYear+1)+"-"+dayOfMonth+" ";//这里月份值+1,因为获取的月份值比正常月份值小1 tvTimePro.setText(datePro+timePro); Log.d(TAG, "onDateChanged: "+datePro); }else if (view.getId()==R.id.dp_custom){ dateCustom=year+"-"+(monthOfYear+1)+"-"+dayOfMonth+" "; tvTimeCustom.setText(dateCustom+timeCustom); Log.d(TAG, "onDateChanged: "+dateCustom); }}
另外DatePicker支持直接输入日期值(长按就可以,仅限于在spinner模式下)
TimePicker
提供一个选择时间的窗口小部件
更多方法及属性请查看官方API
在布局文件中添加
TimePicker的XML属性:
- android:timePickerMode=”spinner|clock” TimePicker显示样式,分别对应spinner样式和时钟样式
代码中:
timePicker_custom = (TimePicker) findViewById(R.id.tp_custom); //24小时制 timePicker_custom.setIs24HourView(true); //为timePicker添加监听器,不可为空。修改TimePicker里的时、分时触发 timePicker_custom.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { timeCustom=hourOfDay+":"+minute; tvTimeCustom.setText(dateCustom+timeCustom); Log.d(TAG, "onTimeChanged: "+timeCustom); } });
TimePicker也支持直接输入日期值(长按就可以,仅限于在spinner模式下)
Chronometer
Class that implements a simple timer
更多方法及属性请查看官方API
在布局文件中添加
Chronometer的XML属性:
- android:countDown=”true|false” 指定此计时器是否倒计时或从基数计数
- android:format=”string” 格式字符串:如果指定,计时器将显示此字符串,第一个“%s”由“MM:SS”或“H:MM:SS”形式的当前定时器值替换
代码中:
Chronometer chron= (Chronometer) findViewById(R.id.chron);//设置递增定时器参考的时间为系统时钟过去实时时间chron.setBase(SystemClock.elapsedRealtime());chron.start();//设置当计时器更改时要调用的侦听器chron.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer chronometer) { //action } });ToggleButton tbn_chro = (ToggleButton) findViewById(R.id.tbn_chro);tbn_chro.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // 开始计数。 这不影响从setBase(long)设置的基数,只是视图显示。 // 计时器通过定期将消息调度到处理程序,即使Widget不可见。 为了确保不会发生资源泄漏, // 用户应确保每个start()调用都具有对stop()的相互调用。 chron.start(); } else { // 停止计数。这不影响从setBase(long)设置的基数,只是视图显示。 // 这将停止向处理程序发送的消息,通过start()有效地释放将按照计时器运行的资源。 chron.stop(); } }});
CalendarView
CalendarView是用于显示和选择日期的日历小部件。此日历支持的日期范围是可配置的
在布局文件中添加
CalendarView的XML属性
- android:dateTextAppearance calendar中天数的文本外观
- android:firstDayOfWeek=”integer” 基于日历的一周第一天
- android:maxDate=”string using \\” 通过以mm / dd / yyyy格式此日历视图中显示的最大的日期。
- android:minDate=”string using \\” 通过以mm / dd / yyyy格式此日历视图中示出的最小的日期。
代码中:
CalendarView cal = (CalendarView) findViewById(R.id.cal_view);cal.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { //action }});
DatePickerDialog和TimePickerDialog
与DatePicker和TimePicker的区别在于DatePicker和TimePicker是显示在屏幕画面上的,而DatePickerDialog和TimePickerDialog对象则是以弹出Dialog的方式来显示
使用方法
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { Toast.makeText(MainActivity.this, "DatePickerDialog "+year + "-" + (month + 1) + "-" + dayOfMonth, Toast.LENGTH_SHORT).show(); } }, year, month, day).show();new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { Toast.makeText(MainActivity.this, "TimePickerDialog " + hourOfDay + ":" + minute, Toast.LENGTH_SHORT).show(); } }, hour, minute, true).show();
其他Picker之NumberPicker
用于数字选择
在布局文件中添加:
代码中:
NumberPicker numberPicker= (NumberPicker) findViewById(R.id.num_pick);// 设置NumberPicker属性numberPicker.setMinValue(minNum);numberPicker.setMaxValue(maxNum);numberPicker.setValue(currentNum);// 监听数值改变事件numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { currentNum = newVal; Toast.makeText(MainActivity.this, "currentNum= "+currentNum, Toast.LENGTH_SHORT).show(); }});
更多相关文章
- 【Android 基础】TextView的属性详解
- Android权限安全(5)组件的android:exported属性
- android之五大布局
- android: 横竖屏切换总结-布局改变和数据保存
- Android中属性动画和补间动画的区别
- Android 布局管理器 之 RelativeLayout&FrameLayout&AbsoluteLay