首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >跟我学Android之九 日期时间组件

跟我学Android之九 日期时间组件

作者头像
张哥编程
发布2024-12-18 11:16:21
发布2024-12-18 11:16:21
5890
举报
文章被收录于专栏:云计算linux云计算linux

视频课: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,布局示例如下:

代码语言:javascript
复制
<AnalogClockandroid:layout_width="wrap_content"android:layout_height="wrap_content" />
跟我学Android之九 日期时间组件_java
跟我学Android之九 日期时间组件_java

DigitalClock是一个数字时钟视图,使用DigitalClock标签进行布局,除了长宽外基本需要其他属性,对应的Java类是android.widget.DigitalClock,布局示例如下:

代码语言:javascript
复制
<DigitalClockandroid:layout_width="wrap_content"android:layout_height="wrap_content" />
跟我学Android之九 日期时间组件_java_02
跟我学Android之九 日期时间组件_java_02

日历视图CalendarView,可用于显示和选择日期

代码语言:javascript
复制
<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" />

事件,选项改变事件

代码语言:javascript
复制
public void onSelectedDayChange(CalendarView view, int year,					int month, int dayOfMonth)	{// 使用Toast显示用户选择的日期	Toast.makeText(CalendarViewTest.this,"你生日是" + year + "年" + month + "月" + dayOfMonth + "日" ,	Toast.LENGTH_SHORT).show();	}});
跟我学Android之九 日期时间组件_java_03
跟我学Android之九 日期时间组件_java_03

DatePicker是一个用于日期选择的控件,使用DatePicker进行布局,常用属性如下: android:calendarViewShown 表示是否显示完整日历 android:endYear 表示可以选择的最大年份 android:maxDate 表示日历显示的最大日期 android:spinnerShown 表示是否显示调节箭头按钮

跟我学Android之九 日期时间组件_java_04
跟我学Android之九 日期时间组件_java_04
跟我学Android之九 日期时间组件_java_05
跟我学Android之九 日期时间组件_java_05

DatePicker是一个用于日期选择的控件,对应的类是android.widget.DatePicker,常用方法如下:

init() 用于初始化显示日期和注册日期选择变化的监听器 getYear() 用于提取选中的年份 getMonth() 用于提取选中的月份 getDayOfMonth() 用于提取选中的日 布局示例如下:

代码语言:javascript
复制
<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为事件监听接口

跟我学Android之九 日期时间组件_java_06
跟我学Android之九 日期时间组件_java_06

计时器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(); //停止

计时器定时触发的事件

代码语言:javascript
复制
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {public void onChronometerTick(Chronometer chronometer) {// 如果开始计时到现在超过了startime秒   if (SystemClock.elapsedRealtime()- chronometer.getBase() > startTime * 1000) {chronometer.stop();// 给用户提示   showDialog();}}});

基于Chronometer制作幻灯片

跟我学Android之九 日期时间组件_java_07
跟我学Android之九 日期时间组件_java_07

Timer类 Timer类的功能与Chronometer组件类似,可以每隔特定时间执行程序代码,且功能比Chronometer组件强大 语法

Timer对象是以schedule方法执行

Timer对象名称.schedule(TimerTask对象,延迟时间,间隔时间);

TimerTask对象:是Timer对象定时执行的程序代码所在,开发者必须自己编写要执行的程序代码。延迟时间:设置多长时间后才开始执行Timer对象,单位是毫秒。间隔时间:设置间隔多长时间执行TimerTask对象一次,单位是毫秒。

TimerTask类 TimerTask对象是Timer对象的主体,也就是用来定义Timer对象定时要执行的工作内容。在TimerTask对象中run方法里的程序代码就是重复执行的代码块,语法为

代码语言:javascript
复制
private TimerTask变量名称=new  TimerTask() {public void run(){    	执行程序代码…});

Handler对象是应用程序中不同线程之间的消息中介,在TimerTask对象中使用Message对象送出消息。

代码语言:javascript
复制
public void run (){Message message=new Message () ;message.what=送出消息;handler.sendMessage (message) ;}

Handler对象接收消息的语法为:

代码语言:javascript
复制
private Handler变量名称=new  Handler(){public void handleMessage(Message msg    {    super.handleMessage (msg);    	switch (msg.what){    	case接收消息: 	程序代码    	break;)   }};

计时秒表初始化计时器

代码语言:javascript
复制
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毫秒

计时秒表,接受消息

代码语言:javascript
复制
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之九 日期时间组件_java_08
跟我学Android之九 日期时间组件_java_08
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档