• 日期、时间选择器(DatePicker和TimePicker)的功能与用法


        DatePicker和TimePicker是两个比较易用的控件,它们都从FrameLayout派生而来,其中DatePicker供用户选择日期;而TimePicker则供用户选择时间。

        DatePicker和TimePicker在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期、时间;如果程序需要获取用户选择的日期、时间,则可通过为DatePicker添加OnDateChangedListener进行监听、为TimePicker添加OnTimerChangedListener进行监听来实现。

        实例:用户选择日期、时间

        为了让用户能选择日期,本应用需要同时使用DatePicker和TimePicker两个组件,并为它们分别绑定监听器。下面是本应用的界面布局。

        布局文件如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="请选择买本书的具体时间"/>
    <!-- 定义一个DatePicker组件 -->
    <DatePicker android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:layout_gravity="center_horizontal"
        android:startYear="2000"
        android:endYear="2014"
        android:calendarViewShown="true"
        android:spinnersShown="true"/>   
        <!-- 定义一个TimerPicker组件 -->
        <TimePicker android:id="@+id/timePicker"
            android:layout_width="wrap_content"
            android:layout_height="100dp"
            android:layout_gravity="center_horizontal"/>
        <!-- 显示用户输入日期、时间的控件 -->
        <EditText android:id="@+id/show"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:editable="false"
            android:cursorVisible="false"/>
    </LinearLayout>

           上面的界面布局中添加了一个DatePicker、一个TimePicker,这两个组件供用户选择日期、时间。除此之外,上面的界面布局中还包含一个EditText,该组件用于显示用户选择的日期时间。

          主程序后台代码如下:

      

    package org.crazyit.helloworld;
    
    import java.util.Calendar;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.DatePicker;
    import android.widget.DatePicker.OnDateChangedListener;
    import android.widget.EditText;
    import android.widget.TimePicker;
    import android.widget.TimePicker.OnTimeChangedListener;
    
    public class DataPickerTest extends Activity {
         //定义5个记录当前时间的变量
        private int year;
        private int month;
        private int day;
        private int hour;
        private int minute;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.data_picker_test);
            DatePicker datePicker=(DatePicker)findViewById(R.id.datePicker);
            TimePicker timePicker=(TimePicker)findViewById(R.id.timePicker);
            //获取当前的年、月、日 、小时、分钟
            Calendar c=Calendar.getInstance();
            year=c.get(Calendar.YEAR);
            month=c.get(Calendar.MONTH);
            day=c.get(Calendar.DAY_OF_MONTH);
            hour=c.get(Calendar.HOUR);
            minute=c.get(Calendar.MINUTE);
            //初始化DatePicker组件,初始化时指定监听器
            datePicker.init(year, month, day,new OnDateChangedListener(){
    
                @Override
                public void onDateChanged(DatePicker view, int year,
                        int month, int day) {
                    // TODO Auto-generated method stub
                    DataPickerTest.this.year=year;
                    DataPickerTest.this.month=month;
                    DataPickerTest.this.day=day;
                    //显示当期日期、时间
                    showDate(year,month,day,hour,minute);
                }
                
            });
            
            //为TimePicker指定监听器
            timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){
    
                @Override
                public void onTimeChanged(TimePicker view, int hour, int minute) {
                    // TODO Auto-generated method stub
                    DataPickerTest.this.hour=hour;
                    DataPickerTest.this.minute=minute;
                    //显示当前日期、时间
                    showDate(year,month,day,hour,minute);
                }
                
                
            });
            
        }
        
                //定义在EditText中显示当前日期、时间的方法
                private void showDate(int year,int month,int day,int hour,int minute)
                {
                    EditText show=(EditText)findViewById(R.id.show);
                    show.setText("您的购买日期为:"+year+"年"+(month+1)+"月"+day+"日    "+hour
                            +"时"+minute+"分");
                    
                }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.data_picker_test, menu);
            return true;
        }
    
    }

         上面的程序中两行粗体字代码就是分别为DatePicker、TimerPicker绑定事件监听器的代码,DatePicker和TimePicker绑定事件监听器的方式略有不同,但本质还是一样的。一旦为DatePicker和TimePicker绑定了监听器,当用户通过这两个组件来选择日期、时间时,监听器被触发——监听器负责使用EditText来显示用户选择的日期、时间。

          运行上面的程序将看到如图所示的效果:

  • 相关阅读:
    eclipse快捷键
    Struts2框架(8)---Struts2的输入校验
    Struts2框架(5)---result结果集
    Spring框架(6)---AspectJ实现AOP
    Spring框架(4)---AOP讲解铺垫
    Spring框架(3)---IOC装配Bean(注解方式)
    Spring框架(2)---IOC装配Bean(xml配置方式)
    Spring框架(1)---Spring入门
    Mybatis框架(5)---动态sql
    Mybatis框架(4)---输入输出映射
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3391770.html
Copyright © 2020-2023  润新知