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的方式展示到屏幕上。

布局代码:

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" >
  
      <DatePicker
          android:id="@+id/dpPicker"
          android:calendarViewShown="false"
         android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
     <TimePicker
         android:id="@+id/tpPicker"
         android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
 
   </LinearLayout>

实现代码:

package com.bgxt.datatimepickerdemo;
 
  import java.text.SimpleDateFormat;
  import java.util.Calendar;
  
  import android.app.Activity;
  import android.os.Bundle;
  import android.widget.DatePicker;
  import android.widget.DatePicker.OnDateChangedListener;
  import android.widget.TextView;
  import android.widget.TimePicker;
  import android.widget.Toast;
 
 public class DataTimePicker extends Activity {
     private DatePicker datePicker;
     private TimePicker timePicker;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_datatimepicker);
 
         datePicker = (DatePicker) findViewById(R.id.dpPicker);
         timePicker = (TimePicker) findViewById(R.id.tpPicker);

        datePicker.init(2013, 8, 20, new OnDateChangedListener() {

            @Override
            public void onDateChanged(DatePicker view, int year,
                   int monthOfYear, int dayOfMonth) {
               // 获取一个日历对象,并初始化为当前选中的时间
               Calendar calendar = Calendar.getInstance();
                 calendar.set(year, monthOfYear, dayOfMonth);
                 SimpleDateFormat format = new SimpleDateFormat(
                        "yyyy年MM月dd日  HH:mm");
                 Toast.makeText(DataTimePicker.this,
                         format.format(calendar.getTime()), Toast.LENGTH_SHORT)
                         .show();
             }
         });
 
         timePicker.setIs24HourView(true);
         timePicker
                 .setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
                     @Override
                     public void onTimeChanged(TimePicker view, int hourOfDay,
                             int minute) {
                        Toast.makeText(DataTimePicker.this,
                                hourOfDay + "小时" + minute + "分钟",
                                 Toast.LENGTH_SHORT).show();
                     }
                 });
 
     }
 }

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代码:

  
      
    import java.util.Calendar;  
      
    import android.app.Activity;  
    import android.app.DatePickerDialog;  
    import android.app.TimePickerDialog;  
    import android.os.Bundle;  
    import android.view.View;  
    import android.view.View.OnClickListener;  
    import android.widget.Button;  
    import android.widget.DatePicker;  
    import android.widget.TextView;  
    import android.widget.TimePicker;  
      
    public class MainActivity extends Activity {  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            // 获得设置日期按钮  
            Button dateBtn = (Button) findViewById(R.id.btn1);  
            // 获得设置时间按钮  
            Button timeBtn = (Button) findViewById(R.id.btn2);  
            // 为设置日期按钮绑定监听器  
            dateBtn.setOnClickListener(new OnClickListener() {  
      
                @Override  
                public void onClick(View arg0) {  

            //  //
                    Calendar c = Calendar.getInstance();  
                    // 直接创建一个DatePickerDialog对话框实例,并将它显示出来  
                    new DatePickerDialog(MainActivity.this,  
                    // 绑定监听器  
                            new DatePickerDialog.OnDateSetListener() {  
      
                                @Override  
                                public void onDateSet(DatePicker view, int year,  
                                        int monthOfYear, int dayOfMonth) {  
                                    TextView show = (TextView) findViewById(R.id.txt1);  
                                    show.setText("您选择了:" + year + "年" + monthOfYear  
                                            + "月" + dayOfMonth + "日");  
                                }  
                            }  
                            // 设置初始日期  
                            , c.get(Calendar.YEAR), c.get(Calendar.MONTH), c  
                                    .get(Calendar.DAY_OF_MONTH)).show();  

            //  ///

                }  
            });  
            // 为设置时间按钮绑定监听器  
            timeBtn.setOnClickListener(new OnClickListener() {  
      
                @Override  
                public void onClick(View v) {  


                    Calendar c = Calendar.getInstance();  
                    // 创建一个TimePickerDialog实例,并把它显示出来  
                    new TimePickerDialog(MainActivity.this,  
                    // 绑定监听器  
                            new TimePickerDialog.OnTimeSetListener() {  
      
                                @Override  
                                public void onTimeSet(TimePicker view,  
                                        int hourOfDay, int minute) {  
                                    TextView show = (TextView) findViewById(R.id.txt2);  
                                    show.setText("您选择了:" + hourOfDay + "时" + minute  
                                            + "分");  
                                }  
                            }  
                            // 设置初始时间  
                            , c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE),  
                            // true表示采用24小时制  
                            true).show();  


                }  
            });  
        }  
    }  

XML布局代码:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:gravity="center"  
    android:orientation="vertical" >  
  
    <Button  
        android:id="@+id/btn1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="设置日期" />  
  
    <Button  
        android:id="@+id/btn2"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="设置时间" />  
  
    <TextView  
        android:id="@+id/txt1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content" />  
  
    <TextView  
        android:id="@+id/txt2"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content" />  
  
</LinearLayout> 


3.  AnalogClock、DigitalClock

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


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值