视频课:https://edu.csdn.net/course/play/7621
本章内
第1节 AnalogClock和DigitalClock
第2节 CalendarVIEw
第3节 DatePicker和TimerPicker
第4节 Chronometer
第5节 Timer类
本章目标
掌握图形时钟和数字时钟的用法。
掌握日历视图的用法。
熟练掌握日期和时间选择器的用法。
熟练掌握Chronometer的用法。
熟练掌握Timer类的用法。
AnalogClock是一个模拟时钟视图,使用AnalogClock标签进行布局,除了长宽外基本需要其他属性,对应的java类是androID.Widget.AnalogClock,布局示例如下:
<AnalogClockandroID:layout_wIDth="wrap_content"androID:layout_height="wrap_content" />
DigitalClock是一个数字时钟视图,使用DigitalClock标签进行布局,除了长宽外基本需要其他属性,对应的java类是androID.Widget.DigitalClock,布局示例如下:
<DigitalClockandroID:layout_wIDth="wrap_content"androID:layout_height="wrap_content" />
日历视图CalendarVIEw,可用于显示和选择日期
<CalendarVIEw androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:firstDayOfWeek="3" androID:shownWeekCount="4" androID:selecteDWeekBackgroundcolor="#aff" androID:focusedMonthDatecolor="#f00" androID:weekSeparatorlinecolor="#ff0" androID:unfocusedMonthDatecolor="#f9f" androID:ID="@+ID/calendarVIEw" />
事件,选项改变事件
public voID onSelectedDayChange(CalendarVIEw vIEw, int year, int month, int dayOfMonth) {// 使用Toast显示用户选择的日期 Toast.makeText(CalendarVIEwTest.this,"你生日是" + year + "年" + month + "月" + dayOfMonth + "日" , Toast.LENGTH_SHORT).show(); }});
DatePicker是一个用于日期选择的控件,使用DatePicker进行布局,常用属性如下:
androID:calendarVIEwShown 表示是否显示完整日历
androID:endYear 表示可以选择的最大年份
androID:maxDate 表示日历显示的最大日期
androID:spinnerShown 表示是否显示调节箭头按钮
DatePicker是一个用于日期选择的控件,对应的类是androID.Widget.DatePicker,常用方法如下:
init() 用于初始化显示日期和注册日期选择变化的监听器
getYear() 用于提取选中的年份
getMonth() 用于提取选中的月份
getDayOfMonth() 用于提取选中的日
布局示例如下:
<DatePicker androID:ID="@+ID/datepick"androID:layout_wIDth="wrap_content"androID:layout_height="wrap_content"androID:calendarVIEwShown="true"/>
TimePicker是一个用于时间选择的控件,使用TimePicker进行布局,除了长宽外基本不用设置其他属性
对应的类是androID.Widget.TimePicker,常用方法如下:
getCurrentHour() 获取当前小时
getCurrentMinute() 获取当前分钟
androID.Widget.TimePicker.OnTimeChangedListener为事件监听接口
计时器Chronometer,该组件与DigitalClock都继承自TextVIEw,因此它们都会显示一段文本。但Chronometer并不显示当前时间,它显示的是从某个起始时间开始,一共过去了多长时间。
Chronometer支持如下常用方法。
setBase(long base):设置计时器的起始时间。
setFormat(String format):设置显示时间的格式。
start():开始计时。
stop():停止计时。
setonChronometerTickListener(Chronometer.OnChronometerTickListener Listener):为计时器绑定事件监听器,当计时器改变时触发该监听器。
使用Chronometer控件实现计器的 *** 作,开始
// 设置开始计时时间
chronometer.setBase(SystemClock.elapsedRealtime());
// 开始记时
chronometer.start();
chronometer.stop(); //停止
计时器定时触发的事件
chronometer.setonChronometerTickListener(new Chronometer.OnChronometerTickListener() {public voID onChronometerTick(Chronometer chronometer) {// 如果开始计时到现在超过了startime秒 if (SystemClock.elapsedRealtime()- chronometer.getBase() > startTime * 1000) {chronometer.stop();// 给用户提示 showDialog();}}});
基于Chronometer制作幻灯片
Timer类
Timer类的功能与Chronometer组件类似,可以每隔特定时间执行程序代码,且功能比Chronometer组件强大
语法
Timer对象是以schedule方法执行
Timer对象名称.schedule(TimerTask对象,延迟时间,间隔时间);
TimerTask对象:是Timer对象定时执行的程序代码所在,开发者必须自己编写要执行的程序代码。延迟时间:设置多长时间后才开始执行Timer对象,单位是毫秒。间隔时间:设置间隔多长时间执行TimerTask对象一次,单位是毫秒。
TimerTask类
TimerTask对象是Timer对象的主体,也就是用来定义Timer对象定时要执行的工作内容。在TimerTask对象中run方法里的程序代码就是重复执行的代码块,语法为
private TimerTask变量名称=new TimerTask() {public voID run(){ 执行程序代码…});
Handler对象是应用程序中不同线程之间的消息中介,在TimerTask对象中使用Message对象送出消息。
public voID run (){Message message=new Message () ;message.what=送出消息;handler.sendMessage (message) ;}
Handler对象接收消息的语法为:
private Handler变量名称=new Handler(){public voID handleMessage(Message msg { super.handleMessage (msg); switch (msg.what){ case接收消息: 程序代码 break;) }};
计时秒表初始化计时器
Timer timer=new Timer();//创建Timer对象timer.schedule(new TimerTask() {//创建TimerTask对象public voID run() { if(flag){ tSec++; Message msg=new Message();//创建消息对象 msg.what=1;//设定类型 handler.sendMessage(msg);//传送消息给Handler }}}, 0,1000);//立刻开始执行,时间间隔为1000毫秒
计时秒表,接受消息
public voID handleMessage(Message msg){//接受消息super.handleMessage(msg);switch(msg.what){//判断消息类型 case 1: cSec=tSec%60;//获取秒数 cMin=tSec/60;//获取分钟数 String str=String.format("%02d:%02d", cMin,cSec);//以00:00的格式显示数据 txtClock.setText(str); break;}}
以上是内存溢出为你收集整理的跟我学Android之九 日期时间组件全部内容,希望文章能够帮你解决跟我学Android之九 日期时间组件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)