Android开发:日期控件的使用(一)

http://www.androidwhy.com/android_14_58_zh.html

Android开发:日期控件的使用(一)

问题提出

    手机的基本功能,除了打电话、发短信,还有一个就是用来看时间。那么在Android开发中,如何为我们的android开发程序添加显示时间的功能呢?

问题分析

关于时间,无外乎三种类型:日期、时刻、计时。在Android  SDK中提供了五种时间相关的控件:时间拾取器TimePicker、日期拾取器DatePicker、计时器Chronometer、模拟时钟AnologClock和数字时钟DigitalClock。接下去的 android开发两篇文章将通过一个小闹钟的例子来简要介绍这几个控件的使用。

问题解决

本例包含一个AnologClock、一个DigitalClock、一个Chronometer、若干个TextView,而TimePicker和DatePicker将以弹出窗口形式出现。本例演示如下四个功能:

  1. 在DigitalClock上方的TextView上显示当前系统日期。
  2. 当单击设置时间后的显示日期的TextView将弹出DatePicker,并将设置好的时间赋给显示日期的TextView,同时启动计时器。
  3. 当单击设置时间后的显示时间的TextView将弹出TimePicker,并将设置好的时间赋给显示时间的TextView,同时启动计时器。
  4. 显示时间与设定时间相同时闪烁“小闹钟”TextView的背景颜色。

本文先介绍布局与如何得到系统时间基本思路清楚了,那就让我们现在开始动手做下吧。

一、打开Eclipse,建立一个Android工程,属性如下:

Project name:Exp03

Build Target:Android2.2

PacketName:com.Exp03

二、布置控件。

在main.xml中添加一个TextView、两个EditView和两个Button控件,部分属性如下:

控件类型 

控件id

用途 

TextView

@+id/txtTitle

程序标题,到点后闪烁背景

TextView

@+id/txtCurrentDate

显示当前日期

TextView

@+id/txtSetDate

设置和显示设置的日期

TextView

@+id/txtSetTime

设置和显示设置的时间

AnologClock

@+id/analogClock1

模拟时钟,显示当前时间

DigitalClock

@+id/digitalClock1

数字时钟,显示当前时间

Chronometer

@+id/chronometer1

计时器

main.xml文件如下:

 

01<?xmlversion="1.0"encoding="utf-8"?>
02<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
03    android:layout_width="fill_parent"
04    android:layout_height="fill_parent"
05    android:orientation="vertical">
06 
07    <TextView
08        android:id="@+id/txtTitle"
09        android:layout_width="fill_parent"
10        android:layout_height="wrap_content"
11        android:text="小闹钟"
12        android:textSize="20dp"
13        android:background="@color/gray"/>
14   <LinearLayout
15       android:layout_width="fill_parent"
16       android:layout_height="wrap_content"
17       android:orientation="horizontal">"
18 
19    <AnalogClock
20        android:id="@+id/analogClock1"
21        android:layout_width="wrap_content"
22        android:layout_height="wrap_content"/>
23 
24    <LinearLayout
25        android:id="@+id/linearLayout2"
26        android:layout_width="match_parent"
27        android:layout_height="match_parent"
28        android:orientation="vertical">
29 
30        <TextView
31            android:id="@+id/txtCurrentDate"
32            android:layout_width="match_parent"
33            android:layout_height="wrap_content"
34            android:text="现在是:2011年10月23日"
35            android:textAppearance="?android:attr/textAppearanceSmall"/>
36 
37        <DigitalClock
38            android:id="@+id/digitalClock1"
39            android:layout_width="match_parent"
40            android:layout_height="fill_parent"
41            android:layout_weight="1"
42            android:gravity="center"
43            android:text="DigitalClock"
44            android:textSize="15dp"/>
45 
46    </LinearLayout>
47    </LinearLayout>
48 <LinearLayout
49       android:layout_width="fill_parent"
50       android:layout_height="wrap_content"
51       android:orientation="horizontal">
52 
53   <TextView
54       android:layout_width="100dp"
55       android:layout_height="wrap_content"
56       android:background="@color/gray"
57       android:text="设置时间:"
58       android:textSize="15dp"/>
59 
60   <TextView
61       android:id="@+id/txtSetDate"
62       android:layout_width="130dp"
63       android:layout_height="wrap_content"
64       android:background="@color/gray"
65       android:text="2011年10月21日"
66       android:textSize="15dp"/>
67 
68   <TextView
69        android:id="@+id/txtSetTime"
70        android:layout_width="fill_parent"
71        android:layout_height="wrap_content"
72        android:text="00:00:00"
73        android:textSize="15dp"
74        android:layout_weight="1"
75        android:background="@color/gray"/>
76    </LinearLayout>
77   <LinearLayout
78       android:id="@+id/linearLayout1"
79       android:layout_width="match_parent"
80       android:layout_height="wrap_content"
81       android:layout_marginTop="5dp"
82       android:background="@color/gray"
83        >
84       <Chronometer
85           android:id="@+id/chronometer1"
86           android:layout_width="wrap_content"
87           android:layout_height="wrap_content"
88           android:layout_weight="10"
89           android:gravity="center"
90           android:format="H:MM:SS"/>
91 
92   </LinearLayout>
93</LinearLayout>

 

效果如图:

日期控件的使用

控件属性简介:

1.     AnologClock

1.1          Handhour

时针,可以指定时针图片,设置时针形状,这里使用默认时针

1.2          Handminute

分针,可以指定分针图片,设置分针形状,这里使用默认分针

可能出于省电的考虑,模拟时钟并没有提供秒针,这有点美中不足。

2.     Chronometer

Format:这是用来指定时间显示格式的字符串,与C++中的CString的Format类似,指定格式为“MM:SS”或“H:MM:SS”,那么计时器将用指定格式替换显示字符串中的第一个%s。

三、功能实现

模拟时钟和数字时钟添加进来了后,在程序运行时就能自动获取系统时间,也就是说无需额外代码,它们就能工作了。

现在来实现其他功能。

1.     获取系统日期显示在idtxtCurrentDate的TextView上

获取系统时间,用到的是java. util.Calendar组件,这个日历组件比较强大,不仅可以得到系统日期,还可以得到系统时间、星期等。这里我们只获取当时的日期。

 

01//声明:
02private intintYear,intMonth,intDay;
03private TextView txtCD;
04//实例化:
05txtCD = (TextView)findViewById(R.id.txtCurrentDate);
06// 实例化显示日期用的TextView
07//自定义函数,用于获取和显示当前系统日期:
08private voidsettxtCurrentDate()
09{
10final Calendar mycalendar = Calendar.getInstance();// 实例化日历
11intYear = mycalendar.get(Calendar.YEAR);// 获取“年”
12intMonth = mycalendar.get(Calendar.MONTH);// 获取“月”
13intDay = mycalendar.get(Calendar.DAY_OF_MONTH);// 获取“日”
14txtCD.setText(
15            newStringBuilder()
16            .append(intYear).append("年")
17            .append(intMonth +1).append("月")
18            .append(intDay).append("日"));// 显示日期
19}

 

由于获取的月数是从0开始计数的,所以需要加1。

在OnCreate中使用这个函数:

1<strong>settxtCurrentDate();</strong>

这样我们在程序运行时就能够在程序启动时显示当下系统的时间了,并在任何需要刷新日期显示的时候,调用这个函数即可刷新日期显示。

问题总结

        在本文中我们完成了android开发中时间拾取器TimePicker、日期拾取器DatePicker、计时器Chronometer、模拟时钟AnologClock和数字时钟DigitalClock的布局。以及如何获取系统时间。获取系统时间用到的是java. util.Calendar的get方法依次获取年月日值,用StringBuilder()类的append()方法将字符串连接在一起。在下一篇文章中我们将完成剩下的两个功能。

标签: android开发,日期控件的使用

阅读延伸:

更新时间:2011-10-24 21:44
作者: 黄国兴
修订: 1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值