android开发 -- 时间控件的使用

关于日期和时间的几个相关控件,

包括:DatePicker(日期选择控件)、TimePicker(时间选择控件)、DatePickerDialog(日期选择对话框)、TimePickerDialog(时间选择对话框)、AnalogClock(模拟时钟控件)、DigitalClock(数字时钟控件)。


1. DatePicker、TimePicker

  DatePickerTimePicker都继承自android.widget.FrameLayout,并且默认展示风格、与操作风格也类似。DatePicker用于展示一个日期选择控件,TimePicker用于展示一个时间选择控件。

  作为一个日期选择控件,DatePicker可以通过设置属性来确定日期选择范围,也可以通过定义好的方法获取到当前选中的时间,并且在修改日期的时候,有响应的事件对其进行响应。

  DatePicker常用相关属性:

  • android:calendarViewShown:是否显示日历。
  • android:startYear:设置可选开始年份。
  • android:endYear:设置可选结束年份。
  • android:maxDate:设置可选最大日期,以mm/dd/yyyy格式设置。
  • android:minDate:设置可选最小日期,以mm/dd/yyyy格式设置。

  DatePicker的方法而言,除了常用获取属性的setter、getter方法之外,还需要特别注意一个初始化的方法init()方法,用于做DatePicker控件的初始化,并且设置日期被修改后,回调的响应事件。此方法的签名如下:

   init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)

  从上面的init()方法可以看到,DatePicker被修改时响应的事件是DatePicker.OnDateChangedListener事件,如果要响应此事件,需要实现其中的onDateChanged()方法,其中参数从签名即可了解意思,这里不再累述。

   onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)

 

  作为一个时间选择控件来说,TimePicker需要与时间相关的getter、setter方法之外,还需要有时间被修改够,回调的响应事件。

  TimePicker常用方法有如下几个:

  • is24HourView():判断是否为24小时制。
  • setIs24HourView():设置是否为24小时制显示。
  • getCurrentXxx():获取当前时间。
  • setCurrentXxx():设置当前时间。
  • setOnTimeChangedListener():设置时间被修改的回调方法。

  TimePicker控件被修改的回调方法,通过setOnTimeChangedListener()方法设置,其传递一个TimePicker.OnTimeChangedListener接口,需要实现其中的onTimeChanged()方法。

  

   下面通过一个示例来讲解这两个控件的使用,在示例中分别展示了这两个控件,并在其修改之后,把修改值通过Toast的方式展示到屏幕上。

布局代码:

[java]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       android:layout_width="match_parent"  
  4.       android:layout_height="match_parent"  
  5.       android:orientation="vertical" >  
  6.     
  7.       <DatePicker  
  8.           android:id="@+id/dpPicker"  
  9.           android:calendarViewShown="false"  
  10.          android:layout_width="match_parent"  
  11.          android:layout_height="wrap_content" />  
  12.    
  13.      <TimePicker  
  14.          android:id="@+id/tpPicker"  
  15.          android:layout_width="match_parent"  
  16.          android:layout_height="wrap_content" />  
  17.    
  18.    
  19.    </LinearLayout>  

实现代码: 

[java]  view plain  copy
  1. package com.bgxt.datatimepickerdemo;  
  2.    
  3.   import java.text.SimpleDateFormat;  
  4.   import java.util.Calendar;  
  5.     
  6.   import android.app.Activity;  
  7.   import android.os.Bundle;  
  8.   import android.widget.DatePicker;  
  9.   import android.widget.DatePicker.OnDateChangedListener;  
  10.   import android.widget.TextView;  
  11.   import android.widget.TimePicker;  
  12.   import android.widget.Toast;  
  13.    
  14.  public class DataTimePicker extends Activity {  
  15.      private DatePicker datePicker;  
  16.      private TimePicker timePicker;  
  17.    
  18.      @Override  
  19.      protected void onCreate(Bundle savedInstanceState) {  
  20.          super.onCreate(savedInstanceState);  
  21.          setContentView(R.layout.activity_datatimepicker);  
  22.    
  23.          datePicker = (DatePicker) findViewById(R.id.dpPicker);  
  24.          timePicker = (TimePicker) findViewById(R.id.tpPicker);  
  25.   
  26.         datePicker.init(2013820new OnDateChangedListener() {  
  27.   
  28.             @Override  
  29.             public void onDateChanged(DatePicker view, int year,  
  30.                    int monthOfYear, int dayOfMonth) {  
  31.                // 获取一个日历对象,并初始化为当前选中的时间  
  32.                Calendar calendar = Calendar.getInstance();  
  33.                  calendar.set(year, monthOfYear, dayOfMonth);  
  34.                  SimpleDateFormat format = new SimpleDateFormat(  
  35.                         "yyyy年MM月dd日  HH:mm");  
  36.                  Toast.makeText(DataTimePicker.this,  
  37.                          format.format(calendar.getTime()), Toast.LENGTH_SHORT)  
  38.                          .show();  
  39.              }  
  40.          });  
  41.    
  42.          timePicker.setIs24HourView(true);  
  43.          timePicker  
  44.                  .setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {  
  45.                      @Override  
  46.                      public void onTimeChanged(TimePicker view, int hourOfDay,  
  47.                              int minute) {  
  48.                         Toast.makeText(DataTimePicker.this,  
  49.                                 hourOfDay + "小时" + minute + "分钟",  
  50.                                  Toast.LENGTH_SHORT).show();  
  51.                      }  
  52.                  });  
  53.    
  54.      }  
  55.  }  

2. DatePickerDialog、TimePickerDialog

         DatePickerDialogTimePickerDialog是两个对话框控件,一个弹出对话框用于选择日期,一个弹出对话框用于选择时间,都继承自android.app.AlertDialog。

        这两个控件的开发过程,其主要就是开发其选择后日期或时间后,相应的事件。

  对于DatePickeDialog而言,通过构造函数可以设置弹出的日期控件的初始值,并且可以指定选中日期后,回调事件的实现,构造函数的签名如下:

    DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

  其中DatePickerDialog.OnDateSetListener为日期选中的响应事件,其他为日期弹出窗口初始化的日期,对于一个OnDateSetListener接口而言,需要实现其中的onDateSet()方法,在这个方法内,可以得到用户选中的日期。

  对于TimePickerDialog而言,同样可以通过构造函数设置初始值,并且设定选中日期后,回调事件的实现,构造函数的签名如下:

    TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)

  其中TimePickerDialog.OnTimeSetListener为时间选中的响应事件,其他为时间弹出窗口初始化的时间,对于一个OnTimeSetListener接口而言,需要实现其中的onTimeSet()方法,在这个方法内,可以得到用户选中的时间。


java代码:

[java]  view plain  copy
  1.     
  2. import java.util.Calendar;    
  3.     
  4. import android.app.Activity;    
  5. import android.app.DatePickerDialog;    
  6. import android.app.TimePickerDialog;    
  7. import android.os.Bundle;    
  8. import android.view.View;    
  9. import android.view.View.OnClickListener;    
  10. import android.widget.Button;    
  11. import android.widget.DatePicker;    
  12. import android.widget.TextView;    
  13. import android.widget.TimePicker;    
  14.     
  15. public class MainActivity extends Activity {    
  16.     
  17.     @Override    
  18.     protected void onCreate(Bundle savedInstanceState) {    
  19.         super.onCreate(savedInstanceState);    
  20.         setContentView(R.layout.main);    
  21.         // 获得设置日期按钮    
  22.         Button dateBtn = (Button) findViewById(R.id.btn1);    
  23.         // 获得设置时间按钮    
  24.         Button timeBtn = (Button) findViewById(R.id.btn2);    
  25.         // 为设置日期按钮绑定监听器    
  26.         dateBtn.setOnClickListener(new OnClickListener() {    
  27.     
  28.             @Override    
  29.             public void onClick(View arg0) {    
  30.   
  31.         //  //////////  
  32.                 Calendar c = Calendar.getInstance();    
  33.                 // 直接创建一个DatePickerDialog对话框实例,并将它显示出来    
  34.                 new DatePickerDialog(MainActivity.this,    
  35.                 // 绑定监听器    
  36.                         new DatePickerDialog.OnDateSetListener() {    
  37.     
  38.                             @Override    
  39.                             public void onDateSet(DatePicker view, int year,    
  40.                                     int monthOfYear, int dayOfMonth) {    
  41.                                 TextView show = (TextView) findViewById(R.id.txt1);    
  42.                                 show.setText("您选择了:" + year + "年" + monthOfYear    
  43.                                         + "月" + dayOfMonth + "日");    
  44.                             }    
  45.                         }    
  46.                         // 设置初始日期    
  47.                         , c.get(Calendar.YEAR), c.get(Calendar.MONTH), c    
  48.                                 .get(Calendar.DAY_OF_MONTH)).show();    
  49.   
  50.         //  ///////////  
  51.   
  52.             }    
  53.         });    
  54.         // 为设置时间按钮绑定监听器    
  55.         timeBtn.setOnClickListener(new OnClickListener() {    
  56.     
  57.             @Override    
  58.             public void onClick(View v) {    
  59.   
  60.   
  61.                 Calendar c = Calendar.getInstance();    
  62.                 // 创建一个TimePickerDialog实例,并把它显示出来    
  63.                 new TimePickerDialog(MainActivity.this,    
  64.                 // 绑定监听器    
  65.                         new TimePickerDialog.OnTimeSetListener() {    
  66.     
  67.                             @Override    
  68.                             public void onTimeSet(TimePicker view,    
  69.                                     int hourOfDay, int minute) {    
  70.                                 TextView show = (TextView) findViewById(R.id.txt2);    
  71.                                 show.setText("您选择了:" + hourOfDay + "时" + minute    
  72.                                         + "分");    
  73.                             }    
  74.                         }    
  75.                         // 设置初始时间    
  76.                         , c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE),    
  77.                         // true表示采用24小时制    
  78.                         true).show();    
  79.   
  80.   
  81.             }    
  82.         });    
  83.     }    
  84. }    

XML布局代码:

[java]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:layout_width="match_parent"    
  4.     android:layout_height="match_parent"    
  5.     android:gravity="center"    
  6.     android:orientation="vertical" >    
  7.     
  8.     <Button    
  9.         android:id="@+id/btn1"    
  10.         android:layout_width="wrap_content"    
  11.         android:layout_height="wrap_content"    
  12.         android:text="设置日期" />    
  13.     
  14.     <Button    
  15.         android:id="@+id/btn2"    
  16.         android:layout_width="wrap_content"    
  17.         android:layout_height="wrap_content"    
  18.         android:text="设置时间" />    
  19.     
  20.     <TextView    
  21.         android:id="@+id/txt1"    
  22.         android:layout_width="wrap_content"    
  23.         android:layout_height="wrap_content" />    
  24.     
  25.     <TextView    
  26.         android:id="@+id/txt2"    
  27.         android:layout_width="wrap_content"    
  28.         android:layout_height="wrap_content" />    
  29.     
  30. </LinearLayout>   


3.  AnalogClock、DigitalClock

    AnalogClock DigitalClock 为两个时间展示控件,切只是展示的风格不同而已,没有什么太大的区别。有一点值得注意的就是,这两个控件展示的时间是无法修改的,仅为系统当前时间。

猜你喜欢

转载自blog.csdn.net/qq_41761551/article/details/80781298