您的位置:首页 > 移动开发 > Android开发

使用DatePicker和TimePicker实现日历功能

2015-10-17 19:14 387 查看
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;
...

@Override
protected 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. 注册监听事件

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...

datePicker.init(year, month, day, new OnDateChangedListener() {

@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
...
}
});

timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {

@Override
public 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;

@Override
protected 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() {

@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
}
});

timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {

@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
setTitle(hourOfDay + ":" + minute);
}
});
}
}

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

效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息