Android学习笔记17:中级视图组件DatePicker和TimePicker

[url=http://sarin.iteye.com/blog/1757401]接上文[/url]
HTML5出现之前,我们在Wweb开发中并没有现成的日期选择器和时间选择器来用,都是通过第三方组件来引入的,比如jQuery UI的DatePicker组件。而在Android中,我看可以使用系统为我们原生提供的日期选择器DatePicker和时间选择器TimePicker。
首先来看一下日期选择器DatePicker的文档:

[img]http://dl.iteye.com/upload/attachment/0078/8399/774c783b-cfae-34cd-8b22-54430e1d6fcf.png[/img]

其继承结构为:
[b]java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.DatePicker[/b]
很容易看出它是FrameLayout的子类,也就是说它的内部实现使用了框架布局。下面在Eclipse中新建项目看看日期选择器的使用:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<DatePicker
android:id="@+id/datePicker1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

代码非常的简单,我们就是定义了一个日期选择器DatePicker,仅仅设置了高度和宽度两个属性,下面直接运行代码,我们来看看显示效果:

[img]http://dl.iteye.com/upload/attachment/0078/8401/4280c82f-89af-3beb-9bd1-daaf7c6d943d.png[/img]

因为纵向显示不下,我们横向显示。可以看出日期选择器的效果了,此时显示的风格是英文下的月-日-年,并且月份使用的是英文简写,这不符合中国的使用习惯,我们需要更改设置。在Android模拟器中,选择Settings,之后选择语言和键盘设置:

[img]http://dl.iteye.com/upload/attachment/0078/8403/1655e209-9203-3dcd-a0a4-63baa2ed88cc.png[/img]

我们进入选择语言,然后选择语言为简体中文,之后再次运行我们的程序,就会看到如下的显示效果:

[img]http://dl.iteye.com/upload/attachment/0078/8405/fd7782e5-c9c3-3aff-abe8-ee775ad8ad0d.png[/img]

此时的日期格式已经按照我们的习惯来显示了。
下面我们看看如何在程序中来控制日期选择器,首先再定义的日期选择器,以供操作:

<DatePicker
android:id="@+id/datePicker2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

之后,编写Java程序代码:

package org.ourpioneer;
import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
public class DatePickerDemoActivity extends Activity {
private DatePicker datePicker2 = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);// 设置使用的布局管理器
datePicker2 = (DatePicker) super.findViewById(R.id.datePicker2);// 获取DatePicker组件
datePicker2.updateDate(2006, 8, 26);// 设置日期
}
}

这里的操作也很简单,获取到日期选择器后设置一下日期即可,我们设置为2006-8-26,运行程序,来看看显示效果:

[img]http://dl.iteye.com/upload/attachment/0078/8407/66e12b7a-4d7a-3cd1-8810-895ab42dc910.png[/img]

此时显示的效果为2006-9-26,说明在月份的设置上,显示的值实际比我们设置的值自动加了1。下面我们将程序安装到Android设备上来看看具体效果,这里的运行环境为Motorola Defy+ 2.3.7 MIUI:

[img]http://dl.iteye.com/upload/attachment/0078/8409/55bd7e59-b00b-396d-b570-268e01d024e7.png[/img]

可以看到显示的效果和模拟器中的略有不同,而且我们对datePicker2的设置没有起作用。这可能是具体ROM的不同处理方式,而在模拟器中的显示是没有问题的,我们只要会用日期选择器就行了。
下面来看看时间选择器TimePicker,日期选择器选择的是年月日,那么时间选择器就是选择时分了,首先来看看TimePicker的文档:

[img]http://dl.iteye.com/upload/attachment/0078/8411/48078679-d213-344f-b8e4-7ce5fa6da17e.png[/img]

其继承结构为:
[b]java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.TimePicker[/b]
很显然,它也是FrameLayout的子类,下面新建项目来看看时间选择器的用法:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayou
t xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TimePicker
android:id="@+id/timePicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

代码也很简单,不用多说什么,直接运行来看看效果:

[img]http://dl.iteye.com/upload/attachment/0078/8413/a529af38-e365-3c6b-a3e3-8f25b9544849.png[/img]

默认显示是12小时制,中文显示上午/下午,英文环境显示AM/PM,这都是常识性的知识了,下面我们将显示风格设置为24小时制:

package org.ourpioneer;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TimePicker;
public class TimePickerDemoActivity extends Activity {
private TimePicker timePicker = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
timePicker = (TimePicker) super.findViewById(R.id.timePicker);// 获取时间选择器
timePicker.setIs24HourView(true);// 设置为24小时制
timePicker.setCurrentHour(12);// 设置当前小时
timePicker.setCurrentMinute(30);// 设置当前分钟
}
}

下面运行程序来看看效果:

[img]http://dl.iteye.com/upload/attachment/0078/8415/2539a27e-44e1-3837-9812-fece45587d46.png[/img]

那么我们看到时间已经调整为24小时制下的12:30了。要注意的日期时间的设置和国际化是密切相关的。
相关代码请参考附件。
接下文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值