android学习笔记(十二)日期、时间组件

android学习笔记(十二)日期、时间组件

48791人阅读 评论(10) 收藏 举报
本文章已收录于:
分类:

时间日期View

AnalogClock

   这个控件是一个带有时针和分针的模拟时钟。效果图如下:


layout文件中配置为:

  1. <AnalogClock  
  2.     android:id="@+id/analogclock"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"/>  
    <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配置为:

  1. <TimePicker  
  2.     android:id="@+id/timepicker"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"/>  
    <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配置为:

  1. <AnalogClock  
  2.     android:id="@+id/analogclock"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"/>  
    <AnalogClock
        android:id="@+id/analogclock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

DatePicker

一个选择年月日的日历布局视图


可以通过init方法进行初始日期设置,和添加日期改变监听:DatePicker.OnDateChangedListener

可以通过updateDate方法进行日期年月日的更新

layout配置为:

  1. <DatePicker  
  2.     android:id="@+id/datepicker"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"/>   
    <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配置文件,如下:

  1. <uses-sdk  
  2.       android:minSdkVersion="11"  
  3.       android:targetSdkVersion="18" />  
  <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="18" />

Android:minSdkVersion的值修改为11,即当前的android程序支持的最低版本为11亦即Android3.0版本

创建一个时间选择器

  这里我们需要做两个事情:

 1、定义 onCreateDialog()方法,并返回 TimePickerDialog对象;

 2、定义TimePickerDialog.OnTimeSetListener 实例,来接受用户选择的时间。

源代码:

  1. public class TimePickerFragment extends DialogFragment implements  
  2.   TimePickerDialog.OnTimeSetListener {  
  3.   
  4.  @Override  
  5.  public Dialog onCreateDialog(Bundle savedInstanceState) {  
  6.   final Calendar calendar = Calendar.getInstance();  
  7.   int hour = calendar.get(Calendar.HOUR_OF_DAY);  
  8.   int minute = calendar.get(Calendar.MINUTE);  
  9.   
  10.   return new TimePickerDialog(getActivity(), this, hour, minute,  
  11.     DateFormat.is24HourFormat(getActivity()));  
  12.  }  
  13.   
  14.  @Override  
  15.  public void onTimeSet(TimePicker view, int hourOfDay, int minute) {  
  16.   //处理设置的时间,这里我们作为示例,在日志中输出我们选择的时间  
  17.   Log.d("onTimeSet""hourOfDay: "+hourOfDay + "Minute: "+minute);  
  18.  }  
  19. }  
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

  1. <Button   
  2.     android:layout_width="wrap_content"   
  3.     android:layout_height="wrap_content"  
  4.     android:text="@string/pick_time"   
  5.     android:onClick="showTimePickerDialog" />  
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:text="@string/pick_time" 
    android:onClick="showTimePickerDialog" />

在源码中实现showTimePickerDialog方法:
  1. public void showTimePickerDialog(View view){  
  2.    TimePickerFragment  timePicker = new TimePickerFragment();  
  3.    imePicker.show(getFragmentManager(), "timePicker");  
  4. }  
public void showTimePickerDialog(View view){
   TimePickerFragment  timePicker = new TimePickerFragment();
   imePicker.show(getFragmentManager(), "timePicker");
}


点击Button后的效果如图:

在LogCat中可以看到我们的输出(我这里点击了两次,所以有两条日志输出):

创建日期选择器

  创建日期选择器和创建时间选择器一样,在继承的DialogFragment中重写onCreateDialog方法,只是返回的对象为DatePickerDialog对象。
源代码如下:
  1. public class DatePickerFragment extends DialogFragment implements  
  2.         DatePickerDialog.OnDateSetListener {  
  3.     @Override  
  4.     public Dialog onCreateDialog(Bundle savedInstanceState) {  
  5.         final Calendar c = Calendar.getInstance();  
  6.         int year = c.get(Calendar.YEAR);  
  7.         int month = c.get(Calendar.MONTH);  
  8.         int day = c.get(Calendar.DAY_OF_MONTH);  
  9.         return new DatePickerDialog(getActivity(), this, year, month, day);  
  10.     }  
  11.     @Override  
  12.     public void onDateSet(DatePicker view, int year, int month, int day) {  
  13.         Log.d("OnDateSet""select year:"+year+";month:"+month+";day:"+day);  
  14.     }  
  15. }  
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);
	}
}
同样我们响应一个Button的onClick事件来呈现日期选择器:
  1. <Button   
  2.       android:id="@+id/datePickerBtn"  
  3.       android:layout_width="wrap_content"  
  4.       android:layout_height="wrap_content"  
  5.       android:text="@string/picker_date"  
  6.       android:onClick="showDatePickerDialog"/>  
  <Button 
        android:id="@+id/datePickerBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/picker_date"
        android:onClick="showDatePickerDialog"/>
showDatePickerDialog方法在源码中的实现为:
  1. public void showDatePickerDialog(View view){  
  2.     DatePickerFragment datePicker = new DatePickerFragment();  
  3.     datePicker.show(getFragmentManager(), "datePicker");  
  4. }  
	public void showDatePickerDialog(View view){
		DatePickerFragment datePicker = new DatePickerFragment();
		datePicker.show(getFragmentManager(), "datePicker");
	}

点击Button后呈现的效果如下:

在LogCat中可以看到我们选择的时间输出值:

3
6
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值