2.6日期时间组件
2.6.1 TextClock
以文本的方式显示系统日期和时间,可以自定义显示格式,是 Android4.2(对应API Level 17)提供的新特性。
TextClock有两种格式设置方式:
1、 在24小时模式:
属性:android:format24Hour
方法:set Format24Hour(CharSequence)
2、 在12小时模式:
属性:android: format12Hour
方法:set Format12Hour (CharSequence)
下面就通过案例2.6-1,讲解TextClock的用法,执行效果如图2.6-1
图2.6-1
2.6.2 AnalogClock
AnalogClock控件显示模拟时钟。它继承了View组件,在View组件的基础上重写了onDraw方法,在OnDraw方法实现绘制模拟时钟,但绘制了时针和分针没有秒针。
表2.6-1列出了AnalogClock所支持的XML属性。
表2.6-1AnalogClock所支持的XML属性说明
XML属性 | 备注 |
android:dial | 设置模拟表盘的使用的图片 |
android:hand_hour | 设置模拟表盘时针使用的图片 |
android:hand_minute | 设置模拟表盘分针使用的图片 |
下面就通过案例2.6-2,讲解AnlogClock的基本用法,执行效果如图2.6-2
图2.6-2
2.6.3 DatePicker和TimePicker
DatePicker和TimePicker是 Android提供用于选择一个时间和选择一个日期的控件。
他们都继承自FrameLayout,使用起来比较简单。
使用DatePicker和TimePicker控件有助于确保用户选择一个时间或日期是有效的、格式正确。
TimePicker用于选择的时间(小时,分钟,上午/下午)的每个部分。
DatePicker用于选择日期(月,日,年)的每个部分。
如图2.6-3所示:
图2.6-3
表2.6-2列出了DatePicker所支持的XML属性。
表2.6-2 DatePicker所支持的XML属性说明
XML属性 | 备注 |
android:calendarViewShown | 是否显示CalendarView组件 |
android:spinnersShown | 是否显示Spinner组件 |
android:endYear | 是否允许选择最后一年 |
android:startYear | 是否允许选择第一年 |
android:maxDate | 以MM / DD / yyyy格式显示此日历视图的最大日期 |
android:minDate | 以MM / DD / yyyy格式显示此日历视图的最小日期 |
下面就通过案例2.6-3,讲解AnlogClock的基本用法,执行效果如图2.6-3
图2.6-3
public class PickerActivity extends AppCompatActivity {
private int year;
private int month;
private int day;
private int hour;
private int minute;
private DatePicker datePicker;
private TimePicker timePicker;
@Override
datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker arg0, int year, int month, int day) {
PickerActivity.this.year = year;
PickerActivity.this.month = month;
PickerActivity.this.day = day;
// 显示当前时间和日期
showDate(year, month, day, hour, minute);
}
});
// 为TimerPicker指定事件监听器
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker arg0, int hour, int minute) {
PickerActivity.this.hour = hour;
PickerActivity.this.minute = minute;
}
});
showDate(year,month,day,hour,minute);
}
protected void showDate(int year, int month, int day, int hour,int minute) {
EditText text = (EditText) findViewById(R.id.etShowDate);
text.setText("选择的日期和时间为:" + year + "年" + (month+1) + "月" + day + "日"
+ hour + "时" + minute+ "分");
}
}
2.6.5 CalendarView
是一个日历组件,用于显示和选择日期。日历支持的范围是可配置的。用户可以选择一个日期,也可以通过触摸滚动来选择所需的日期。
表2.6-3列出了CalendarView所支持的XML属性。
表2.6-3 CalendarView所支持的XML属性说明
XML属性 | 方法 | 备注 |
android: dateTextAppearance | setDateTextAppearance(INT) | 设置日历控件日期文字的样式 |
android:maxDate | setMaxDate(long) | 以MM / DD / yyyy格式在此日历视图中显示的最小日期 |
android:minDate | setMinDate(long) | 以MM / DD / yyyy格式在此日历视图中显示的最大日期 |
android: firstDayOfWeek | setFirstDayOfWeek(INT) | 给日历设置周的第一天 |
android:shownWeekCount | set ShownWeekCount(INT) | 设置日历总共显示几个周 |
android:selectedWeekBackgroundColor
| setSelectedWeekBackgroundColor(INT)
| 设置已选择的周的背景颜色 |
android:focusedMonthDateColor
| setFocusedMonthDateColor
| 设置焦点月份的文字的颜色 |
android:weekSeparatorLineColor
| setWeekSeparatorLineColor(INT)
| 设置周分割线的颜色
|
android:unfocusedMonthDateColor
| setUnfocusedMonthDateColor(INT) | 设置未选中月份的文字的颜色 |
下面就通过案例2.6-4,讲解CalendarView的基本用法,执行效果如图2.6-4。
图2.6-4
public class CalendarViewActivity extends AppCompatActivity {
private CalendarView cv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calendar_view);
cv=(CalendarView)findViewById(R.id.calenddarView);
initCalendarView();
}
private void initCalendarView(){
//为CalendarView组件的日期改变事件添加事件监听器
cv.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year,
int month, int dayOfMonth) {
//使用Toast显示用户选择的日期
Toast.makeText(CalendarViewActivity.this,
"购票日期:" + year + "年" + month + "月" + dayOfMonth + "日"
, Toast.LENGTH_SHORT).show();
}
});
}
}
案例关键点:
通过为CalendarView对象设置日期监听OnDateChangeListener,并复写回调方法onSelectedDayChange(),获得用户选择的日期
作者:冲天之峰 20160711