Android学习——DatePocker和TimePicker

DatePicker、TimePicker探究

  DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年、月、日的日期数据并允许用户对其修改。如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加OnDateChangedListener监听器。

  TimePicker也继承自FrameLayout类。时间选择控件向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择。如果要捕获用户修改时间数据的事件,便需要为TimePicker添加OnTimeChangedListener监听器

一、DatePicker

基本概念:

DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年、月、日的日期数据并允许用户对其修改。如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加OnDateChangedListener监听器。

重要方法:

getDayOfMonth():获取当前Day

getMonth():     获取当前月(注意:返回数值为0..11,需要自己+1来显示)

getYear()       获取当前年

updateDate(int year, int monthOfYear, int dayOfMonth):更新日

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



参数

year             初始年(译者注:注意使用new Date()初始化年时,需要+1900,如下:date.getYear() + 1900)

monthOfYear         初始月。

dayOfMonth         初始日。

onDateChangedListener   日期改变时通知用户的事件监听,可以为空(null)。

效果图:

Android学习——DatePocker和TimePicker

参考代码:

  (1)main.xml源码

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >



    <Button

        android:id="@+id/btnSet"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onClick="onClick"

        android:text="I am all set!" />



    <DatePicker

        android:id="@+id/datePicker"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />



    <TimePicker

        android:id="@+id/timePicker"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />



</LinearLayout>
main.xml

 

  (2) 按F11键在Android模拟器上调试应用程序。图4-15显示了DatePicker视图(需要按Ctrl+F11组合键将模拟器的方向改为横向;纵向太窄,不能很好地显示DatePicker)。

Android学习——DatePocker和TimePicker

 

  (3) 返回Eclipse,在BasicViews4Activity.java文件中添加下列粗体显示的语句:

package net.learn2develop.BasicViews4;



import java.text.SimpleDateFormat;

import java.util.Date;



import android.app.Activity;

import android.app.Dialog;

import android.app.TimePickerDialog;

import android.os.Bundle;

import android.view.View;

import android.widget.DatePicker;

import android.widget.TimePicker;

import android.widget.Toast;



public class BasicViews4Activity extends Activity {

      TimePicker timePicker;

      DatePicker datePicker;

    

      int hour, minute;

      static final int TIME_DIALOG_ID = 0;



     /** Called when the activity is first created. */

      @Override

      public void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.main);



          timePicker = (TimePicker) findViewById(R.id.timePicker);

           timePicker.setIs24HourView(true);

        

           // showDialog(TIME_DIALOG_ID);

           datePicker = (DatePicker) findViewById(R.id.datePicker);       

      }



     @Override

     protected Dialog onCreateDialog(int id)

      {

           switch (id) {

           case TIME_DIALOG_ID:

                return new TimePickerDialog(

                          this, mTimeSetListener, hour, minute, false);

           }

           return null;

      }



    private TimePickerDialog.OnTimeSetListener mTimeSetListener =

     new TimePickerDialog.OnTimeSetListener()

     {

         public void onTimeSet(

                    TimePicker view, int hourOfDay, int minuteOfHour)

          {

               hour = hourOfDay;

               minute = minuteOfHour;

            

               SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm aa");

               Date date = new Date(0,0,0, hour, minute);

               String strDate = timeFormat.format(date);

            

               Toast.makeText(getBaseContext(),

                         "You have selected " + strDate,

                         Toast.LENGTH_SHORT).show();           

          }

     };

    public void onClick(View view) {

          Toast.makeText(getBaseContext(),

                    "Date selected:" + (datePicker.getMonth() + 1) +

                    "/" + datePicker.getDayOfMonth() +

                    "/" + datePicker.getYear() + "\n" +

                    "Time selected:" + timePicker.getCurrentHour() +

                    ":" + timePicker.getCurrentMinute(),

                    Toast.LENGTH_SHORT).show();

     }

}
BasicViews4Activity.java

  (4) 按F11键在Android模拟器上调试应用程序。一旦设置了日期,单击Button将显示设置的日期,如图4-16所示。

Android学习——DatePocker和TimePicker


 示例说明:

  通过调用getMonth()、getDayOfMonth()和getYear()方法来分别获取月份、日子和年份:
"Date selected:" + (datePicker.getMonth() + 1) +
                "/" + datePicker.getDayOfMonth() +
                "/" + datePicker.getYear() + "\n" +

  注意,getMonth()方法返回0代表一月、返回1代表二月,依次类推。因此,需要将此方法返回的结果加1来获得对应的月份数。

 

使用对话框显示DatePicker视图

  (1) 使用前述“试一试”中创建的BasicViews4项目,在BasicViews4Activity.java文件中添加下列粗体显示的语句:

package net.learn2develop.BasicViews4;



import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;



import android.app.Activity;

import android.app.DatePickerDialog;

import android.app.Dialog;

import android.app.TimePickerDialog;

import android.os.Bundle;

import android.view.View;

import android.widget.DatePicker;

import android.widget.TimePicker;

import android.widget.Toast;



public class BasicViews4Activity extends Activity {

      TimePicker timePicker;

      DatePicker datePicker;



      int hour, minute;

      int yr, month, day;



      static final int TIME_DIALOG_ID = 0;

      static final int DATE_DIALOG_ID = 1;



     /** Called when the activity is first created. */

      @Override

      public void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.main);



          timePicker = (TimePicker) findViewById(R.id.timePicker);

           timePicker.setIs24HourView(true);



          // showDialog(TIME_DIALOG_ID);

           datePicker = (DatePicker) findViewById(R.id.datePicker);



        //---get the current date---

           Calendar today = Calendar.getInstance();

           yr = today.get(Calendar.YEAR);

           month = today.get(Calendar.MONTH);

           day = today.get(Calendar.DAY_OF_MONTH);



          showDialog(DATE_DIALOG_ID);       

      }



     @Override

      protected Dialog onCreateDialog(int id)

      {

           switch (id) {

           case TIME_DIALOG_ID:

                return new TimePickerDialog(

                          this, mTimeSetListener, hour, minute, false);

         case DATE_DIALOG_ID:

                return new DatePickerDialog(

                          this, mDateSetListener, yr, month, day);

           }

                return null;

      }



    private DatePickerDialog.OnDateSetListener mDateSetListener =

      new DatePickerDialog.OnDateSetListener()

      {

           public void onDateSet(

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

           {

                yr = year;

                month = monthOfYear;

                day = dayOfMonth;

                Toast.makeText(getBaseContext(),

                          "You have selected : " + (month + 1) +

                          "/" + day + "/" + year,

                     Toast.LENGTH_SHORT).show();

           }

      };



     private TimePickerDialog.OnTimeSetListener mTimeSetListener =

      new TimePickerDialog.OnTimeSetListener()

      {

           public void onTimeSet(

                     TimePicker view, int hourOfDay, int minuteOfHour)

           {

                hour = hourOfDay;

                minute = minuteOfHour;



               SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm aa");

                Date date = new Date(0,0,0, hour, minute);

                String strDate = timeFormat.format(date);



               Toast.makeText(getBaseContext(),

                         "You have selected " + strDate,

                         Toast.LENGTH_SHORT).show();           

         }

     };



    public void onClick(View view) {

         Toast.makeText(getBaseContext(),

                   "Date selected:" + (datePicker.getMonth() + 1) +

                   "/" + datePicker.getDayOfMonth() +

                   "/" + datePicker.getYear() + "\n" +

                   "Time selected:" + timePicker.getCurrentHour() +

                   ":" + timePicker.getCurrentMinute(),

                   Toast.LENGTH_SHORT).show();

     }

}
BasicViews4Activity.java

  (2) 按F11键在Android模拟器上调试应用程序。当活动加载时,可以看到DatePicker显示在一个对话框窗口中(如图4-17所示)。设定好一个日期并单击Set按钮。Toast窗口将显示出您刚刚设置好的日期。

Android学习——DatePocker和TimePicker

示例说明

  DatePicker和TimePicker的工作原理是一致的。当设置日期时,它将触发onDateSet()方法,从中可以获取由用户设定的日期:

public void onDateSet(

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

         {

             yr = year;

             month = monthOfYear;

             day = dayOfMonth;

             Toast.makeText(getBaseContext(),

                     "You have selected : " + (month + 1) +

                     "/" + day + "/" + year,

                     Toast.LENGTH_SHORT).show();

         }

注意,在显示对话框之前,需要初始化3个变量—yr、month和day:

  //---get the current date---

     Calendar today = Calendar.getInstance();

      yr = today.get(Calendar.YEAR);

      month = today.get(Calendar.MONTH);

      day = today.get(Calendar.DAY_OF_MONTH);



     showDialog(DATE_DIALOG_ID);       

如果不这样做,当在运行时创建一个DatePickerDialog类的实例时,将发生非法参数异常(current should be >= start and <= end)。

 

 

二、TimePicker

基本概念:

  TimePicker也继承自FrameLayout类。时间选择控件向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择。如果要捕获用户修改时间数据的事件,便需要为TimePicker添加OnTimeChangedListener监听器

  用于选择一天中时间的视图,支持 24小时及上午/下午模式。小时,分钟及上午/下午(如果可用)都可以用垂直滚动条来控制。用键盘来输入小时。两个数的小时数可以通过输入两个数字来实现,例如在一定时间内输入‘1’和‘2’即选择了12点。分钟能显示输入的单个数字。在AM/PM模式下,用户可以输入'a', 'A"或 'p', 'P'来选取。对于对话框视图,参见TimePickerDialog

重要方法:

setCurrentMinute(Integer currentMinute) 设置当前时间的分钟

getCurrentMinute()                      获取当前时间的分钟

setEnabled(boolean enabled)             设置当前视图是否可以编辑。

m_TimePicker.setIs24HourView(true);     设置为24小时制显示

setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener)当时间改变时调用

实例:

timePicker = (TimePicker)findViewById(R.id.timePicker);

timePicker.setCurrentHour(16);

timePicker.setCurrentMinute(10);

updateDisplay(16,10);

timePicker.setOnTimeChangedListener(this);

效果图:

Android学习——DatePocker和TimePicker

 

公共方法:

 三、公共方法









         public int getBaseline ()



         返回窗口空间的文本基准线到其顶边界的偏移量。如果这个部件不支持基准线对齐,这个方法返回-1/。



                   返回值



  基准线的偏移量,如果不支持基准线对齐则返回-1public Integer getCurrentHour ()



         获取当前时间的小时部分。



                   返回值



                            当前小时(0-23public Integer getCurrentMinute ()



         获取当前时间的分钟部分。



                   返回值



                            当前分钟。



 



         public boolean is24HourView ()



         获取当前系统设置是否是24小时制。



                   返回值



                            如果是24小时制返回true,否则返回false。



 



         public void setCurrentHour (Integer currentHour)



      设置当前小时。



 



         public void setCurrentMinute (Integer currentMinute)



         设置当前分钟(0-59)。



 



         public void setEnabled (boolean enabled)



      设置可用的视图状态。可用的视图状态的解释在子类中改变。



                   参数



                            enabled 如果可用为true,否则为false。 



 



         public void setIs24HourView (Boolean is24HourView)



      设置是24小时还是上午/下午制。



                   参数



                            is24HourView     True表示 24小时制. False表示上午/下午制.



 



         public void setOnTimeChangedListener (TimePicker.OnTimeChangedListener onTimeChangedListener)



         设置时间调整事件的回调函数。



                   参数

                              onTimeChangedListener          回调函数,不能为空。 

 
公共方法参考

受保护方法:

 protected void onRestoreInstanceState (Parcelable state)



         允许一个视图回复到之前用onSaveInstanceState()保存的状态,state参数不能为空。



                   参数



                            state     之前调用onSaveInstanceState()返回的状态。



 



         protected Parcelable onSaveInstanceState ()



         用来允许一个视图保存当前的内部状态,之后可以创建新的实例应用相同的状态。状态信息不能包含常量或在之后重新构造。例如,你永远不能保存在屏幕上的当前位置,因为当创建一个新的视图时,它将会被放置到它的层次结构中,它的位置会被重新计算。



         你可以存储到这里的一些例子:一个文本框中当前光标的位置(但通常不是文字本身,文字通常保存在内容提供者(content provider)或其他持久的储存中),一个列表视图中的当前选中项。



                   返回值

                       返回一个包含视图当前状态的Parcelable对象,或没有什么状态保存时返回null。默认实现返回null。 
protected举例

参考代码:

  (1) 打开Eclipse,创建一个名为BasicViews4的Android项目。

  (2) 修改位于res/layout文件夹下的main.xml文件,添加下列粗体显示的行:

<?xml version="1.0" encoding="utf-8"?>

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

      android:layout_width="fill_parent"

      android:layout_height="fill_parent"

      android:orientation="vertical" >



<TimePicker android:id="@+id/timePicker"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content" />



<Button android:id="@+id/btnSet"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="I am all set!"

      android:onClick="onClick" />



</LinearLayout>
main.xml

  (3) 在Eclipse中选择该项目的名称并按F11键在Android模拟器中调试应用程序。图4-12显示了运用中的TimePicker。除了单击加(+)和减(—)按钮外,还可以使用设备上的数字键盘来修改小时和分钟,单击AM按钮在AM和PM之间切换。

Android学习——DatePocker和TimePicker

  (4) 返回Eclipse,在BasicViews4Activity.java文件中添加下列粗体显示的语句:
package net.learn2develop.BasicViews4;

package net.learn2develop.BasicViews4;



import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.TimePicker;

import android.widget.Toast;



public class BasicViews4Activity extends Activity {

      TimePicker timePicker;

    

      /** Called when the activity is first created. */

      @Override

      public void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.main);

        

           timePicker = (TimePicker) findViewById(R.id.timePicker);

           timePicker.setIs24HourView(true);

      }

    

      public void onClick(View view) {

           Toast.makeText(getBaseContext(),

                    "Time selected:" +

                    timePicker.getCurrentHour() +

                    ":" + timePicker.getCurrentMinute(),

                    Toast.LENGTH_SHORT).show();

      }

    

 }
BasicViews4Activity.java

  (5) 按F11键在Android模拟器上调试应用程序。这一次,TimePicker将以24小时格式显示。单击Button将显示您在TimePicker中设置好的时间(如图4-13所示)。

Android学习——DatePocker和TimePicker

示例说明

  TimePicker显示了一个可以让用户设置时间的标准用户界面。默认情况下,它以AM/PM格式显示时间。如果想要以24小时格式来显示,可以使用setIs24HourView()方法。

  为了以编程方式获得用户设置的时间,可以使用getCurrentHour()和getCurrentMinute()方法:
Toast.makeText(getBaseContext(),
          "Time selected:" +
          timePicker.getCurrentHour() +
          ":" + timePicker.getCurrent
Minute(),
          Toast.LENGTH_SHORT).show();

  注意:getCurrentHour()方法总是返回24小时格式的时间,也就是返回一个0~23之间的值。

  虽然可以在一个活动中显示TimePicker,但更好的方法是在一个对话框窗口中显示它。这样一旦设置好时间,TimePicker就会消失,不再占据活动中的任何空间。下面的“试一试”展示了如何做到这一点。

使用对话框显示TimePicker视图:

  (1) 所创建的BasicViews4项目,按如下所示修改

package net.learn2develop.BasicViews4;



import java.text.SimpleDateFormat;

 import java.util.Date;



import android.app.Activity;

import android.app.Dialog;

import android.app.TimePickerDialog;

import android.os.Bundle;

import android.view.View;

import android.widget.TimePicker;

import android.widget.Toast;



public class BasicViews4Activity extends Activity {

      TimePicker timePicker;



     int hour, minute;

      static final int TIME_DIALOG_ID = 0;



     /** Called when the activity is first created. */

      @Override

      public void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.main);



          timePicker = (TimePicker) findViewById(R.id.timePicker);

           timePicker.setIs24HourView(true);

        

           showDialog(TIME_DIALOG_ID);

      }



     @Override

      protected Dialog onCreateDialog(int id)

      {

           switch (id) {

           case TIME_DIALOG_ID:

                return new TimePickerDialog(

                        this, mTimeSetListener, hour, minute, false);

           }

           return null;

     }



    private TimePickerDialog.OnTimeSetListener mTimeSetListener =

     new TimePickerDialog.OnTimeSetListener()

     {

          public void onTimeSet(

                  TimePicker view, int hourOfDay, int minuteOfHour)

          {

               hour = hourOfDay;

               minute = minuteOfHour;

            

               SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm aa");

               Date date = new Date(0,0,0, hour, minute);

               String strDate = timeFormat.format(date);

            

               Toast.makeText(getBaseContext(),

                        "You have selected " + strDate,

                        Toast.LENGTH_SHORT).show();           

          }

     };



    public void onClick(View view) {

          Toast.makeText(getBaseContext(),

                    "Time selected:" +

                           timePicker.getCurrentHour() +

                            ":" + timePicker.getCurrentMinute(),

                           Toast.LENGTH_SHORT).show();

     }  



}
BasicViews4Activity.java

  (2) 按F11键在Android模拟器中调试应用程序。当活动被加载时,可以看到TimePicker显示在一个对话框窗口内(如图4-14所示)。设置一个时间,然后单击Set按钮,将看到Toast窗口显示了您刚刚设置好的时间。

Android学习——DatePocker和TimePicker

示例说明

  为了显示一个对话框窗口,可以使用showDialog()方法,传入一个ID来标识对话框的源:
     showDialog(TIME_DIALOG_ID);
  当调用showDialog()方法时,onCreateDialog()方法将被调用:

@Override

     protected Dialog onCreateDialog(int id)

     {

          switch (id) {

          case TIME_DIALOG_ID:

               return new TimePickerDialog(

                        this, mTimeSetListener, hour, minute, false);

          }

          return null;

     }

  这里,创建了一个TimePickerDialog类的新实例,给它传递了当前上下文、回调函数、初始的小时和分钟,以及TimePicker是否以24小时格式显示。

  当用户单击TimePicker对话框窗口中的Set按钮时,将调用onTimeSet()方法:

private TimePickerDialog.OnTimeSetListener mTimeSetListener =

     new TimePickerDialog.OnTimeSetListener()

     {

          public void onTimeSet(

                    TimePicker view, int hourOfDay, int minuteOfHour)

          {

               hour = hourOfDay;

               minute = minuteOfHour;

            

               SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm aa");

               Date date = new Date(0,0,0, hour, minute);

               String strDate = timeFormat.format(date);

            

               Toast.makeText(getBaseContext(),

                        "You have selected " + strDate,

                        Toast.LENGTH_SHORT).show();           

           }

     };

  这里,onTimeSet()方法将包含用户分别通过hourOfDay和minuteOfHour参数设置的小时和分钟。

 

DatePicker和TimePicker的应用

模拟日期与时间选择控件的用法

目录结构:

Android学习——DatePocker和TimePicker

 

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">

    <DatePicker android:id="@+id/datePicker" 

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal"/>

    <EditText android:id="@+id/dateEt"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:cursorVisible="false"

        android:editable="false"/>

    <TimePicker android:id="@+id/timePicker" 

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal"/>

    <EditText android:id="@+id/timeEt"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:cursorVisible="false"

        android:editable="false"/>

</LinearLayout>
main.xml

DpTpActivity类

package com.ljq.activity;



import java.util.Calendar;



import android.app.Activity;

import android.os.Bundle;

import android.widget.DatePicker;

import android.widget.EditText;

import android.widget.TimePicker;

import android.widget.DatePicker.OnDateChangedListener;

import android.widget.TimePicker.OnTimeChangedListener;



public class DpTpActivity extends Activity {

    private EditText dateEt=null;

    private EditText timeEt=null;

    

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        dateEt=(EditText)findViewById(R.id.dateEt);

        timeEt=(EditText)findViewById(R.id.timeEt);

        DatePicker datePicker=(DatePicker)findViewById(R.id.datePicker);

        TimePicker timePicker=(TimePicker)findViewById(R.id.timePicker);

        

        Calendar calendar=Calendar.getInstance();

        int year=calendar.get(Calendar.YEAR);

        int monthOfYear=calendar.get(Calendar.MONTH);

        int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH);

        datePicker.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){



            public void onDateChanged(DatePicker view, int year,

                    int monthOfYear, int dayOfMonth) {

                dateEt.setText("您选择的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日。");

            }

            

        });

        

        timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){



            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {

                timeEt.setText("您选择的时间是:"+hourOfDay+"时"+minute+"分。");

            }

            

        });

    }

}
DpTpActivity

运行结果:

Android学习——DatePocker和TimePicker

 

使用对话框显示日期、时间视图

效果图:

Android学习——DatePocker和TimePicker

main.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >



    <TextView

        android:id="@+id/dateText"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        />

    <Button 

        android:id="@+id/dateButton"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="设置日期"

        />

    <TextView

        android:id="@+id/timeText"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        />

    <Button 

        android:id="@+id/timeButton"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="设置时间"

        />

    

</LinearLayout>
main.xml
TextAndridActivity.java类
package com.tiantian.test;



import java.util.Calendar;



import android.app.Activity;

import android.app.DatePickerDialog;

import android.app.DatePickerDialog.OnDateSetListener;

import android.app.Dialog;

import android.app.TimePickerDialog;

import android.app.TimePickerDialog.OnTimeSetListener;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.net.Uri;

import android.os.Bundle;

import android.os.SystemClock;

import android.util.DisplayMetrics;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Chronometer;

import android.widget.DatePicker;

import android.widget.DatePicker.OnDateChangedListener;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.TimePicker;

import android.widget.TimePicker.OnTimeChangedListener;

import android.widget.ZoomControls;



public class TextAndridActivity extends Activity {

    /** Called when the activity is first created. */

    private TextView dateText;

    private TextView timeText;

    private Button dateButton;

    private Button timeButton;

    

    private int year;

    private int monthOfYear;

    private int dayOfMonth;

    private int hour;

    private int minute;

    //声明一个独一无二的标识,来作为要显示DatePicker的Dialog的ID

    final static int DATE_DIALOG_ID = 1;

    //声明一个独一无二的标识,来作为要显示TimePicker的Dialog的ID

    final static int TIME_DIALOG_ID = 2;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        dateText = (TextView) findViewById(R.id.dateText);

        timeText = (TextView) findViewById(R.id.timeText);

        dateButton = (Button) findViewById(R.id.dateButton);

        dateButton.setOnClickListener(new OnClickListener() {

            

            @Override

            public void onClick(View v) {

                //调用Activity类的方法来显示Dialog:调用这个方法会允许Activity管理该Dialog的生命周期,  

//并会调用 onCreateDialog(int)回调函数来请求一个Dialog

                showDialog(DATE_DIALOG_ID);

            }

        });

        timeButton = (Button) findViewById(R.id.timeButton);

        timeButton.setOnClickListener(new OnClickListener() {

            

            @Override

            public void onClick(View v) {

                //调用Activity类的方法来显示Dialog:调用这个方法会允许Activity管理该Dialog的生命周期,  

//并会调用 onCreateDialog(int)回调函数来请求一个Dialog

                showDialog(TIME_DIALOG_ID);

            }

        });

        //得到当前日期和时间(作为初始值)

        Calendar calendar = Calendar.getInstance();

        year = calendar.get(Calendar.YEAR);

        monthOfYear = calendar.get(Calendar.MONTH);

        dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);

        hour = calendar.get(Calendar.HOUR_OF_DAY);

        minute = calendar.get(Calendar.MINUTE);

        

    }

    

    //当Activity调用showDialog函数时会触发该函数的调用:

    @Override

    protected Dialog onCreateDialog(int id) {

        // TODO Auto-generated method stub

        switch(id){

        case DATE_DIALOG_ID:

            return new DatePickerDialog(this, new OnDateSetListener() {

                

                @Override

                public void onDateSet(DatePicker view, int year, int monthOfYear,

                        int dayOfMonth) {

                    // TODO Auto-generated method stub

                    dateText.setText(year + "年" + (monthOfYear + 1) + "月" + dayOfMonth + "日");

                }

            }, year, monthOfYear, dayOfMonth);

        case TIME_DIALOG_ID:

            return new TimePickerDialog(this, new OnTimeSetListener() {

                

                @Override

                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

                    // TODO Auto-generated method stub

                    timeText.setText(hourOfDay + "时" + minute + "分");

                }

            }, hour, minute, true);

        }

        return null;

    }

    

    

    

}
TextAndridActivity.java

 

java类

你可能感兴趣的:(Android学习)