【Android 开发教程】DatePicker

来源:互联网 发布:透过现象看本质 知乎 编辑:程序博客网 时间:2024/05/22 01:42

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


DataPicker和上一节讲的TimePicker很相似。使用DatePicker,可以让用户选择一个特定的日期。下面展示如何使用DatePicker。

1. 使用上一节的工程,BasicViews4,修改main.xml。

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7. <Button android:id="@+id/btnSet"  
  8.     android:layout_width="wrap_content"  
  9.     android:layout_height="wrap_content"  
  10.     android:text="I am all set!"  
  11.     android:onClick="onClick" />  
  12.   
  13. <DatePicker android:id="@+id/datePicker"  
  14.     android:layout_width="wrap_content"  
  15.     android:layout_height="wrap_content" />  
  16.   
  17. <TimePicker android:id="@+id/timePicker"  
  18.     android:layout_width="wrap_content"  
  19.     android:layout_height="wrap_content" />  
  20.   
  21. </LinearLayout>  
2. 按F11调试。竖屏模式显式DatePicker稍微有一些窄,按Ctrl+F11,可以更改屏幕的显示方向。

3. 在BasicViews4Activity.java中添加一些代码

[java] view plaincopy
  1. public class BasicViews4Activity extends Activity {  
  2.     TimePicker timePicker;  
  3.     DatePicker datePicker;  
  4.   
  5.     int hour, minute;  
  6.     int yr, month, day;  
  7.   
  8.     static final int TIME_DIALOG_ID = 0;  
  9.     static final int DATE_DIALOG_ID = 1;  
  10.   
  11.     /** Called when the activity is first created. */  
  12.     @Override  
  13.     public void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.main);  
  16.   
  17.         timePicker = (TimePicker) findViewById(R.id.timePicker);  
  18.         timePicker.setIs24HourView(true);  
  19.   
  20.         // showDialog(TIME_DIALOG_ID);  
  21.         datePicker = (DatePicker) findViewById(R.id.datePicker);  
  22.   
  23.         //---get the current date---  
  24.         Calendar today = Calendar.getInstance();  
  25.         yr = today.get(Calendar.YEAR);  
  26.         month = today.get(Calendar.MONTH);  
  27.         day = today.get(Calendar.DAY_OF_MONTH);  
  28.   
  29.         showDialog(DATE_DIALOG_ID);          
  30.     }  
  31.   
  32.     @Override  
  33.     protected Dialog onCreateDialog(int id)  
  34.     {  
  35.         switch (id) {  
  36.         case TIME_DIALOG_ID:  
  37.             return new TimePickerDialog(  
  38.                     this, mTimeSetListener, hour, minute, false);  
  39.         case DATE_DIALOG_ID:  
  40.             return new DatePickerDialog(  
  41.                     this, mDateSetListener, yr, month, day);  
  42.   
  43.         }  
  44.         return null;  
  45.     }  
  46.   
  47.     private DatePickerDialog.OnDateSetListener mDateSetListener =  
  48.             new DatePickerDialog.OnDateSetListener()  
  49.     {  
  50.         public void onDateSet(  
  51.                 DatePicker view, int year, int monthOfYear, int dayOfMonth)  
  52.         {  
  53.             yr = year;  
  54.             month = monthOfYear;  
  55.             day = dayOfMonth;  
  56.             Toast.makeText(getBaseContext(),  
  57.                     "You have selected : " + (month + 1) +  
  58.                     "/" + day + "/" + year,  
  59.                     Toast.LENGTH_SHORT).show();  
  60.         }  
  61.     };  
  62.   
  63.     private TimePickerDialog.OnTimeSetListener mTimeSetListener =  
  64.             new TimePickerDialog.OnTimeSetListener()  
  65.     {  
  66.         public void onTimeSet(  
  67.                 TimePicker view, int hourOfDay, int minuteOfHour)  
  68.         {  
  69.             hour = hourOfDay;  
  70.             minute = minuteOfHour;  
  71.   
  72.             SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm aa");           
  73.             Date date = new Date(0,0,0, hour, minute);  
  74.             String strDate = timeFormat.format(date);  
  75.   
  76.             Toast.makeText(getBaseContext(),  
  77.                     "You have selected " + strDate,  
  78.                     Toast.LENGTH_SHORT).show();           
  79.         }  
  80.     };  
  81.   
  82.     public void onClick(View view) {  
  83.         Toast.makeText(getBaseContext(),  
  84.                 "Date selected:" + (datePicker.getMonth() + 1) +  
  85.                 "/" + datePicker.getDayOfMonth() +  
  86.                 "/" + datePicker.getYear() + "\n" +  
  87.                 "Time selected:" + timePicker.getCurrentHour() +  
  88.                 ":" + timePicker.getCurrentMinute(),  
  89.                 Toast.LENGTH_SHORT).show();  
  90.     }  
  91.   
  92. }  
4. 点击按钮。