在实际开发中,经常会遇见一些时间选择器、日期选择器、数字选择器等需求,那么从本期开始来学习Android中常用选择器,今天学习的是DatePicker和TimePicker。
一、DatePicker
DatePicker是一个比较简单的组件,从FrameLayout派生而来,供用户选择日期。其在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期,如果程序需要获取用户选择的日期则可通过为DatePicker添加 OnDateChangedListener 进行监听来实现。
使用DatePicker的常用XML属性如下:
· android:calendarViewShown:设置该日期选择是否显示CalendarView组件。
· android:endYear:设置日期选择器允许选择的最后一年。
· android:maxDate:设置该日期选择器的最大日期。以mm/dd/yyyy格式指定最大日期。
· android:minDate:设置该日期选择器的最小日期。以mm/dd/yyyy格式指定最小日期。
· android:spinnersShown:设置该日期选择器是否显示Spinner日期选择组件。
· android:startYear:设置日期选择器允许选择的第一年。
接下来通过一个简单的示例程序来学习DatePicker的使用。
继续使用WidgetSample工程的advancedviewsample模块,在app/main/res/layout/目录下创建datepicker_layout.xml文件,在其中填充如下代码片段:
[代码]xml代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<DatePicker
android:id="@+id/datePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:startYear="2015"
android:endYear="2020"
android:calendarViewShown="true"
android:spinnersShown="true" />
</RelativeLayout>
|
新建DatePickerActivity.java文件,加载上面新建的布局文件,初始化DatePicker并获取用户的选择,具体代码如下:
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package com.jinyu.cqkxzsxy.android.advancedviewsample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.DatePicker;
import android.widget.Toast;
import java.util.Calendar;
/**
* @ 创建者 鑫鱻
* @ 描述 Android零基础入门到精通系列教程,欢迎关注微信公众号ShareExpert
*/
public class DatePickerActivity extends AppCompatActivity {
private DatePicker mDatePicker = null; // 日期选择器
private Calendar mCalendar = null; // 日历
private int mYear; // 年
private int mMonth; // 月
private int mDay; // 日
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.datepicker_layout);
// 获取日历对象
mCalendar = Calendar.getInstance();
// 获取当前对应的年、月、日的信息
mYear = mCalendar.get(Calendar.YEAR);
mMonth = mCalendar.get(Calendar.MONTH);
mDay = mCalendar.get(Calendar.DAY_OF_MONTH);
// 获取DatePicker组件
mDatePicker = (DatePicker) findViewById(R.id.datePicker);
// DatePicker 初始化
mDatePicker.init(mYear, mMonth, mDay, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Toast.makeText(DatePickerActivity.this,
year + " 年" + (monthOfYear + 1) + " 月" + dayOfMonth + " 日",
Toast.LENGTH_SHORT).show();
}
});
}
}
|
上面程序代码为DatePicker绑定事件监听器的代码,当用户通过这该组件来选择日期时,监听器就会被触发。
运行程序,可以看到界面效果。
二、TimePicker
TimePicker与DatePicker非常相似,主要是供用户选择时间。也是在FrameLayout的基础上提供了一些方法来获取当前用户所选择的时间,如果程序需要获取用户选择的时间则可通过为TimePicker添加 OnTimeChangedListener 进行监听来实现。
接下来通过一个简单的示例程序来学习TimePicker的使用。
继续使用WidgetSample工程的advancedviewsample模块,在app/main/res/layout/目录下创建timepicker_layout.xml文件,在其中填充如下代码片段:
[代码]xml代码:
?
01 02 03 04 05 06 07 08 09 10 11 | <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TimePicker
android:id="@+id/timePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
</RelativeLayout>
|
新建TimePickerActivity.java文件,加载上面新建的布局文件,初始化TimePicker并获取用户的选择,具体代码如下:
[代码]java代码:
?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | package com.jinyu.cqkxzsxy.android.advancedviewsample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TimePicker;
import android.widget.Toast;
import java.util.Calendar;
/**
* @ 创建者 鑫鱻
* @ 描述 Android零基础入门到精通系列教程,欢迎关注微信公众号ShareExpert
*/
public class TimePickerActivity extends AppCompatActivity {
private TimePicker mTimePicker = null; // 时间选择器
private Calendar mCalendar = null; // 日历
private int mHour; // 时
private int mMinute; // 分
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timepicker_layout);
// 获取日历对象
mCalendar = Calendar.getInstance();
// 获取对应的时、分的信息
mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
mMinute = mCalendar.get(Calendar.MINUTE);
// 获取TimePicker组件
mTimePicker = (TimePicker) findViewById(R.id.timePicker);
// 为TimePicker指定监听器
mTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(TimePickerActivity.this, hourOfDay + ":" + minute,
Toast.LENGTH_SHORT).show();
}
});
}
}
|
上面程序代码为TimePicker绑定事件监听器的代码,当用户通过这该组件来选择时间时,监听器就会被触发。
运行程序,可以看到界面效果。
至此,关于DatePicker和TimePicker的简单使用先告一段落,更多功能建议多摸索练习。
今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!
原文链接:http://www.apkbus.com/blog-205190-72623.html