使用DatePicker和TimePicker实现日历功能

来源:互联网 发布:c stl 源码解析 pdf 编辑:程序博客网 时间:2024/05/16 14:41

DatePicker 和TimePicker 可以在当前的界面中实现日期和时间的选择。

使用方法如下:

1. 在布局添加DatePicker 和TimePicker

这个没什么好说的

    <DatePicker        android:id="@+id/datePicker1"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <TimePicker        android:id="@+id/timePicker1"        android:layout_width="match_parent"        android:layout_height="wrap_content" />

2. 初始化各类控件

public class MainActivity extends Activity {private DatePicker datePicker;private TimePicker timePicker;        ...        @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);datePicker = (DatePicker)findViewById(R.id.datePicker1);timePicker = (TimePicker)findViewById(R.id.timePicker1);...}

3. 注册监听事件

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);...datePicker.init(year, month, day, new OnDateChangedListener() {@Overridepublic void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {...}});timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {...}});}

注册DatePicker 用到了init()方法

void init(int year, int monthOfYear, int dayOfMonth, OnDateChangedListener onDateChangedListener)

它的前三个参数用来传递当前显示的年月日,最后一个参数是对应的监听器。

timePicker 用setOnTimeChangedListener() 函数注册监听器。


完整示例代码:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.example.datetimepickerdemo.MainActivity" >    <DatePicker        android:id="@+id/datePicker1"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <TimePicker        android:id="@+id/timePicker1"        android:layout_width="match_parent"        android:layout_height="wrap_content" /></LinearLayout>

MainActivity.java

public class MainActivity extends Activity {private DatePicker datePicker;private TimePicker timePicker;private Calendar calendar;private int year;private int month;private int day;private int hour;private int min;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);datePicker = (DatePicker)findViewById(R.id.datePicker1);timePicker = (TimePicker)findViewById(R.id.timePicker1);calendar = Calendar.getInstance();year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH);day = calendar.get(Calendar.DAY_OF_MONTH);hour = calendar.get(Calendar.HOUR_OF_DAY);min = calendar.get(Calendar.MINUTE);setTitle(year + "-" + (month + 1) + "-" + day + "  " + hour + ":" + min);datePicker.init(year, month, day, new OnDateChangedListener() {@Overridepublic void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);}});timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {setTitle(hourOfDay + ":" + minute);}});}}

上面代码中的Calendar 类用于获取当前系统时间。setTitle()方法用来设置标题,它接收一个String 类型的参数。


效果如下:





0 0