Android开发:日期控件的使用(二)
2012-04-23 20:51
471 查看
【转载】http://www.androidwhy.com/android_14_58_zh.html
Android开发:日期控件的使用(一)中,我们android开发的布局已经敲定,系统时间也已经显示在指定位置了,那么另两个功能该怎么实现呢,它们都用到什么了呢?
当单击设置时间后的显示日期的TextView将弹出DatePicker,并将设置好的时间赋给显示日期的TextView,同时启动计时器。
当单击设置时间后的显示时间的TextView将弹出TimePicker,并将设置好的时间赋给显示时间的TextView,同时启动计时器。
显示时间与设定时间相同时闪烁“小闹钟”TextView的背景颜色。
二、功能实现
1.当单击设置时间后的显示日期的TextView将弹出DatePicker,并将设置好的时间赋给显示日期的TextView,同时启动计时器。
这个功能,我们可以拆分成三部分,一个是单击事件、一个是DatePicker对话框的创建、还有一个就是计时器的启动
单击事件很简单,就是使用之前说过的OnClickListener,弹出对话框相对麻烦些。
1.1定义对话框标签和计时器变量
1.2在OnCreate中班实例化定时器
1.3重载OnDialogCreate函数
其中ddSetDateListener是我们定义的单击DataPicker的设置按钮后的监听器,即按下DataPicker的“设置”按钮后需要做的事情——设置TextView的值和启动计时器,其定义如下:
1.4设置单击事件
完成以上工作后,就可以设置TextView的单击响应了,因为之后显示时间的TextView也有单击响应,所以这里定义一个Listener,处理这两个单击动作。声明与定义及使用如下:
效果如图:
2.当单击设置时间后的显示时间的TextView将弹出TimePicker,并将设置好的时间赋给显示时间的TextView,同时启动计时器这个与DatePicker用法差不多,这里不再详细讲,直接给出相关代码如下:
2.1对话框标签及TextView变量定义
2.2实例化并设置单击事件的监听器
2.3创建TimePicker对话框,这里修改之前重载的protectedDialogonCreateDialog(intid)函数,如下:
2.4设置OnTimeSetListener用来响应单击TimePicker对话框中“设置”按钮
这样,我们定时功能就完成了,这里要注意的是,TimePicker只有小时和分钟,在构造函数TimePickerDialog(Context
context,TimePickerDialog.OnTimeSetListenercallBack,inthourOfDay,intminute,booleanis24HourView)中,最后一个bool值设为true代表使用24小时制。
3.显示时间与设定时间相同时闪烁“小闹钟”TextView的背景颜色。
这里主要用到我们设置的计时器,用计时器的OnChronometerTickListener监听器,即在计时器内容发生变化时响应,相当于其他语言中的OnTimer函数。
为了方便陈述,这里只做时间计时,即设闹钟为每天都在该设定时间时闪烁。
最终效果:
android开发教程中我们简单的演示了时间拾取器TimePicker、日期拾取器DatePicker、计时器Chronometer、模拟时钟AnologClock和数字时钟DigitalClock的使用。当然本文的小例子旨在抛砖引玉,让大家了解Android中,那些和时间有关的东西。
对于计时器Chronometer,本例未涉及到的,但也常用的方法还有stop();该方法相当于暂停,在使用该方法后再使用start()方法,计时器将从停止那刻继续计时。如果想要计时器在停止后重新启动时从零开始计时就需要加上cmCM.setBase(SystemClock.elapsedRealtime());用以归零。
这个简单的android开发例子,希望对大家有点启发,从而创作出更加美观、功能更加强劲的时钟软件来。本教程及上一教程的代码在附件位置可以下载,有需要的朋友可以直接下载。
附件:EXP03.zip
标签:android开发,
日期控件高级使用
Android开发:日期控件的使用(二)
问题提出
在上一教程文章问题分析
本文将使用DatePicker和TimePicker完成时间的选择,并启动Chronometer。这样当我们设定的时间和当前时间相等时(分、时相等),小闹钟就开始动作,闪烁标题背景颜色。问题解决
一、现在明确下本文要完成的功能:当单击设置时间后的显示日期的TextView将弹出DatePicker,并将设置好的时间赋给显示日期的TextView,同时启动计时器。
当单击设置时间后的显示时间的TextView将弹出TimePicker,并将设置好的时间赋给显示时间的TextView,同时启动计时器。
显示时间与设定时间相同时闪烁“小闹钟”TextView的背景颜色。
二、功能实现
1.当单击设置时间后的显示日期的TextView将弹出DatePicker,并将设置好的时间赋给显示日期的TextView,同时启动计时器。
这个功能,我们可以拆分成三部分,一个是单击事件、一个是DatePicker对话框的创建、还有一个就是计时器的启动
单击事件很简单,就是使用之前说过的OnClickListener,弹出对话框相对麻烦些。
1.1定义对话框标签和计时器变量
1 | static final int DATE_DIALOG_ID= 0 ; |
2 | private ChronometercmCM; |
1 | cmCM=(Chronometer)findViewById(R.id.chronometer1); |
1 | @Override |
2 | protected DialogonCreateDialog( int id){ |
3 | switch (id){ |
4 | case DATE_DIALOG_ID: |
5 | return new DatePickerDialog( this , |
6 | ddSetDateListener,intYear,intMonth,intDay); |
7 | } |
8 | return null ; |
9 | } |
01 | private DatePickerDialog.OnDateSetListenerddSetDateListener= new DatePickerDialog.OnDateSetListener(){ |
02 | public void onDateSet(DatePickerview, int year, int monthOfYear, int
|
03 | intYear=year; |
04 | intMonth=monthOfYear; |
05 | intDay=dayOfMonth; |
06 | txtSD.setText( |
07 | new StringBuilder() |
08 | .append(intYear).append( "年" ) |
09 | .append(intMonth+ 1 ).append( "月" ) |
10 | .append(intDay).append( "日" )); //设置TextView的值 |
11 | //启动定时器 |
12 | cmCM.setBase(SystemClock.elapsedRealtime()); //从当前时间开始计时 |
13 | cmCM.setFormat( "计时:%s" ); //时间格式 |
14 | cmCM.start(); //开始计时 |
15 | } |
16 | }; |
完成以上工作后,就可以设置TextView的单击响应了,因为之后显示时间的TextView也有单击响应,所以这里定义一个Listener,处理这两个单击动作。声明与定义及使用如下:
01 | //声明: |
02 | private OnClickListenerlistener; |
03 | private TextViewtxtCD; |
04 | //定义: |
05 | listener= new OnClickListener(){ |
06 | public void onClick(Viewv) |
07 | { //TODOAuto-generatedmethodstub |
08 |
09 | if (v.getId()==R.id.txtSetDate) |
10 | { |
11 | showDialog(DATE_DIALOG_ID); |
12 | } |
13 | else if (v.getId()==R.id.txtSetTime) |
14 | { |
15 | showDialog(TIME_DIALOG_ID); |
16 | } |
17 | }}; |
18 | txtSD=(TextView)findViewById(R.id.txtSetDate); |
19 | //使用: |
20 | txtSD.setOnClickListener(listener); |
2.当单击设置时间后的显示时间的TextView将弹出TimePicker,并将设置好的时间赋给显示时间的TextView,同时启动计时器这个与DatePicker用法差不多,这里不再详细讲,直接给出相关代码如下:
2.1对话框标签及TextView变量定义
1 | static final int TIME_DIALOG_ID= 1 ; |
2 | private TextViewtxtST; |
1 | txtST=(TextView)findViewById(R.id.txtSetTime); |
2 | txtST.setOnClickListener(listener); |
01 | @Override |
02 | protected DialogonCreateDialog( int id){ |
03 | switch (id){ |
04 | case DATE_DIALOG_ID: |
05 | return new DatePickerDialog( this ,ddSetDateListener, |
06 | intYear,intMonth,intDay); |
07 | case TIME_DIALOG_ID: |
08 | return new TimePickerDialog( this , |
09 | ttSetTimeListener,intHour,intMinute, true ); |
10 | } |
11 | return null ;} |
01 | private TimePickerDialog.OnTimeSetListenerttSetTimeListener= new TimePickerDialog.OnTimeSetListener(){ |
02 | @Override |
03 | public void onTimeSet(TimePickerview, int hourOfDay, int minute){ |
04 | intHour=hourOfDay; |
05 | intMinute=minute; |
06 | txtST.setText( new StringBuilder() |
07 | .append(intHour< 10 ?( "0" +intHour):intHour).append( " :" ) |
08 | .append(intMinute< 10 ?( "0" +intMinute):intMinute).append( " )); |
09 | cmCM.setBase(SystemClock.elapsedRealtime()); |
10 | cmCM.setFormat( "计时:%s" ); |
11 | cmCM.start();}}; |
context,TimePickerDialog.OnTimeSetListenercallBack,inthourOfDay,intminute,booleanis24HourView)中,最后一个bool值设为true代表使用24小时制。
3.显示时间与设定时间相同时闪烁“小闹钟”TextView的背景颜色。
这里主要用到我们设置的计时器,用计时器的OnChronometerTickListener监听器,即在计时器内容发生变化时响应,相当于其他语言中的OnTimer函数。
为了方便陈述,这里只做时间计时,即设闹钟为每天都在该设定时间时闪烁。
01 | //声明并初始化: |
02 | private OnChronometerTickListeneroclistener; |
03 | static private int color; //用来存储颜色 |
04 | private Timesrct,nowt; //srct表示设定的时间,nowt是当前时间 |
05 | color=Color.BLUE; |
06 |
07 | //实现OnChronometerTickListener的onChronometerTick(Chronometerarg0)方法: |
08 | oclistener= new OnChronometerTickListener(){ |
09 | @Override |
10 | public void onChronometerTick(Chronometerarg0){ |
11 | //TODOAuto-generatedmethodstub |
12 | final Calendarmycalendar=Calendar.getInstance(); //实例化日历 |
13 | intYear=mycalendar.get(Calendar.YEAR); //获取“年” |
14 | intMonth=mycalendar.get(Calendar.MONTH); //获取“月” |
15 | intDay=mycalendar.get(Calendar.DAY_OF_MONTH); //获取“日” |
16 |
17 | nowt= new Time(); |
18 | srct= new Time(); |
19 |
20 | nowt.setToNow(); //设置当前时间 |
21 | srct.set( 0 ,intMinute,intHour,intDay,intMonth,intYear); //设置为设定的时间 |
22 | //设置背景颜色 |
23 | if (nowt.hour==srct.hour&&nowt.minute==srct.minute) |
24 | { |
25 | TextViewtxtTitle=(TextView)findViewById(R.id.txtTitle); |
26 | txtTitle.setBackgroundColor(color); |
27 | if (color==Color.BLUE) |
28 | { |
29 | color=Color.YELLOW; |
30 | } |
31 | else |
32 | { |
33 | color=Color.BLUE; |
34 | } |
35 | } |
36 | }}; |
问题总结
在本文的对于计时器Chronometer,本例未涉及到的,但也常用的方法还有stop();该方法相当于暂停,在使用该方法后再使用start()方法,计时器将从停止那刻继续计时。如果想要计时器在停止后重新启动时从零开始计时就需要加上cmCM.setBase(SystemClock.elapsedRealtime());用以归零。
这个简单的
附件:
标签:
日期控件高级使用
相关文章推荐
- 【Android 开发】:UI控件之 DatePicker 输入日期控件的使用
- Android开发全程记录(五)——使用日期选择控件
- Android开发:日期控件的使用(一)
- 【Android 开发】:UI控件之时间和日期对话框控件的的使用(四)
- 【Android 开发】:UI控件之开关状态按钮 ToggleButton 的使用方法
- 使用C# + Xamarin开发Android应用-- 动态添加控件
- 【Android 开发】:UI控件之显示图片控件 ImageView 的使用方法
- Android开发之日期选择器的使用
- Android开发:控件GridView的使用
- 【按住你的心】——Android开发CheckBox&RadioButton控件的简单使用
- android 开发零起步学习笔记(十七):自定义android用户控件,使用回调函数实现自定义事件
- android开发中spinner控件的使用
- Android开发---WebView控件的使用
- Android开发之四(九):常用控件之日期(DatePicker)
- ASP.NET项目开发中日期控件DatePicker如何使用
- Android 日期控件(DatePickerDialog)与时间控件(TimePickerDialog)的使用
- 【Android 开发】:UI控件之 Menu 菜单的的使用(一)
- Android开发之RadioGroup与RadioButton控件使用
- Android TV开发经验总结---控件Gridview使用
- 在Android开发中使用自定义组合控件的例子