android学习笔记(24)日期、时间选择框(DatePicker和TimePicker)的功能和用法

2014-12-24 9:15:37     15 人阅读    

日期期、时间选择框(DatePicker和TimePicker)的功能和用法
DatePicker和TimePicker是两个比较易用的控件,它们都从FrameLayout派生而来,其中DatePicker供用户选择日期;而TimePicker则供用户选择时间。
DatePicker和TimePicker在FrameLayout的基础上提供了一些方法来获取当前用户所选 择的日期、时间;如果程序需要获取用户选择的日期、时间,则可通过为DatePicker添加 OnDateChangedListener 进行监听、为 TimePicker 添加 OnTimerChangedListener 进行监听来实现。
下面以一个让用户选择日期、时间的例子来示范DatePicker和TimePicker的功能和用法。
实例:用户选择曰期、时间为了让用户能选择日期,本应用需要同时使用DatePickei•和TimePicker两个组件,并为它们分别绑定监听器。下面是本应用的界面布局。
程序清单:codes\02\2.4\ChooseDate\res\layout\main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_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="wrap_content"
 android:layout_gravity="center_horizontal"
 />
<!-- 定义一个TimePicker组件 -->
<TimePicker android:id="@+id/timePicker"
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"
 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,该组件用于显示用户选择的曰 期、时间。
主程序如下。
程序清单:codes\02\2.4\ChooseDate\src\org\crazyit\choosedate\ChooseDate.java

package org.crazyit.choosedate;

import java.util.Calendar;

import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;


public class ChooseDate extends Activity
{
 //定义5个记录当前时间的变量
 private int year;
 private int month;
 private int day;
 private int hour;
 private int minute;
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  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 arg0, int year
    , int month, int day)
   {
    ChooseDate.this.year = year;
    ChooseDate.this.month = month;
    ChooseDate.this.day = day;
    //显示当前日期、时间
    showDate(year, month , day , hour, minute);
   }
  });
  //为TimePicker指定监听器
  timePicker.setOnTimeChangedListener(new OnTimeChangedListener()
  {
   @Override
   public void onTimeChanged(TimePicker arg0, int hour, int minute)
   {
    ChooseDate.this.hour = hour;
    ChooseDate.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 + "月"
   + day + "日  " + hour + "时" + minute + "分");
 } 
}


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


原文地址:http://www.itmmd.com/201412/369.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android学习笔记(25)进度条(ProgressBar)的功能和用法   上一篇
下一篇  linux命令详解(21)用find查找文件,find命令详解

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!