TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
时间日期View
AnalogClock
这个控件是一个带有时针和分针的模拟时钟。效果图如下:

layout文件中配置为:
- <AnalogClock
- android:id="@+id/analogclock"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
复制代码
TimePicker
用于选择一天中时间的视图,支持 24小时及上午/下午模式。小时,分钟及上午/下午(如果可用)都可以用垂直滚动条来控制。用键盘来输入小时。两个数的小时数可以通过输入两个数字来实现,例如在一定时间内输入‘1’和‘2’即选择了12点。分钟能显示输入的单个数字。在AM/PM模式下,用户可以输入"a", "A"或 "p", "P"来选取。
效果如图:

layout配置为:
- <TimePicker
- android:id="@+id/timepicker"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
复制代码
可以通过方法:setIs24HourView来设置是否为24小时,参数为true时为24小时,即没有AM、PM选项。
通过方法setCurrentHour来设置当前的小时值
通过方法setCurrentMinute设置当前的分钟值
通过setOnTimeChangeListener方法来设置时间改变监听
DigitalClock
像AnalogClock,但是是数字的。显示秒。根据字体按比例显示小时/分钟/秒,无法像AnalogClock转动显示。
效果如下:

layout配置为:
- <AnalogClock
- android:id="@+id/analogclock"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
复制代码
DatePicker
一个选择年月日的日历布局视图

可以通过init方法进行初始日期设置,和添加日期改变监听:DatePicker.OnDateChangedListener
可以通过updateDate方法进行日期年月日的更新
layout配置为:
- <DatePicker
- android:id="@+id/datepicker"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
复制代码
日期、时间选择器的使用
上面介绍的只是日期、时间的容器,在实际应用中通常是在一个对话框中进行日期时间设置。
DatePicker对应DatePickerDialog,DatePickerDialog是装载DatePicker的一个简单的容器;
TimePicker 对应TimePickerDialog,TimePickerDialog是装载TimePicker的一个简单的容器。
这里我们通过继承DialogFragment来处理我们的日期时间选择对话框,DialogFragment能够管理对话框的生命周期,并且能够以不同的布局配置来呈现我们的选择对话框。
注意DialogFragment是从android3.0版本才有的,所以我们需要修改我们的AndroidManifest.xml配置文件,如下:
- <uses-sdk
- android:minSdkVersion="11"
- android:targetSdkVersion="18" />
复制代码
将android:minSdkVersion的值修改为11,即当前的Android程序支持的最低版本为11亦即Android3.0版本
创建一个时间选择器
这里我们需要做两个事情:
1、定义
- TimePickerDialog.OnTimeSetListener
复制代码 实例,来接受用户选择的时间。
源代码:
- public class TimePickerFragment extends DialogFragment implements
- TimePickerDialog.OnTimeSetListener {
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final Calendar calendar = Calendar.getInstance();
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- int minute = calendar.get(Calendar.MINUTE);
- return new TimePickerDialog(getActivity(), this, hour, minute,
- DateFormat.is24HourFormat(getActivity()));
- }
- @Override
- public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
- //处理设置的时间,这里我们作为示例,在日志中输出我们选择的时间
- Log.d("onTimeSet", "hourOfDay: "+hourOfDay + "Minute: "+minute);
- }
- }
复制代码
显示时间选择对话框
我们通过在Activity中添加一个Button,并通过Button的OnClick事件来触发时间选择对话框。
定义button
- <Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/pick_time"
- android:onClick="showTimePickerDialog" />
复制代码
- 在源码中实现showTimePickerDialog方法:
复制代码
- public void showTimePickerDialog(View view){
- TimePickerFragment timePicker = new TimePickerFragment();
- imePicker.show(getFragmentManager(), "timePicker");
- }
复制代码
- 在LogCat中可以看到我们的输出(我这里点击了两次,所以有两条日志输出):
复制代码 创建日期选择器
- [b] [/b] 创建日期选择器和创建时间选择器一样,在继承的DialogFragment中重写onCreateDialog方法,只是返回的对象为DatePickerDialog对象。
复制代码
- public class DatePickerFragment extends DialogFragment implements
- DatePickerDialog.OnDateSetListener {
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final Calendar c = Calendar.getInstance();
- int year = c.get(Calendar.YEAR);
- int month = c.get(Calendar.MONTH);
- int day = c.get(Calendar.DAY_OF_MONTH);
- return new DatePickerDialog(getActivity(), this, year, month, day);
- }
- @Override
- public void onDateSet(DatePicker view, int year, int month, int day) {
- Log.d("OnDateSet", "select year:"+year+";month:"+month+";day:"+day);
- }
- }
复制代码 - [/code]
-
- [code]同样我们响应一个Button的onClick事件来呈现日期选择器:
复制代码
- <Button
- android:id="@+id/datePickerBtn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/picker_date"
- android:onClick="showDatePickerDialog"/>
复制代码
- showDatePickerDialog方法在源码中的实现为:
复制代码
- public void showDatePickerDialog(View view){
- DatePickerFragment datePicker = new DatePickerFragment();
- datePicker.show(getFragmentManager(), "datePicker");
- }
复制代码

[code][/code]
|
|