Android中日期和时间控件的使用

分类:Android 进阶 1647人阅读 评论(1) 收藏 举报 android layout dialog button calendar date

本文主要讲述Android中的日期控件和时间控件的使用,以一个Demo的例子来展示日期和时间控件的使用,先看下如下效果图:

从效果图中可以看到该Demo是通过单击【选择日期】按钮和【选择时间】按钮弹出日期或者时间的对话框,然后设置日期或者时间,设置完成后会在文本框中显示设置的日期或时间值。

【1】Demo程序框架图:

【2】布局文件 res/layout/main.xml 源码:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <TextView
  7. android:layout_width="fill_parent"android:layout_height="wrap_content"
  8. android:gravity="center"android:text="欢迎关注Andy.ChenBlog"/>
  9. <TextView
  10. android:layout_width="fill_parent"android:layout_height="wrap_content"
  11. android:gravity="center"android:text="日期和时间控件的使用DEMO"/>
  12. <LinearLayoutandroid:orientation="horizontal"
  13. android:layout_width="fill_parent"android:layout_height="wrap_content">
  14. <EditTextandroid:id="@+id/showdate"android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"android:layout_weight="1"/>
  16. <Buttonandroid:id="@+id/pickdate"android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"android:text="选择日期"/>
  18. </LinearLayout>
  19. <LinearLayoutandroid:orientation="horizontal"
  20. android:layout_width="fill_parent"android:layout_height="wrap_content">
  21. <EditTextandroid:id="@+id/showtime"android:layout_width="fill_parent"
  22. android:layout_height="wrap_content"android:layout_weight="1"/>
  23. <Buttonandroid:id="@+id/picktime"android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"android:text="选择时间"/>
  25. </LinearLayout>
  26. </LinearLayout>

【3】包com.andyidea.calenderdemo下MainActivity.java源码:

[html] view plain copy
  1. packagecom.andyidea.calenderdemo;
  2. importjava.util.Calendar;
  3. importandroid.app.Activity;
  4. importandroid.app.DatePickerDialog;
  5. importandroid.app.Dialog;
  6. importandroid.app.TimePickerDialog;
  7. importandroid.os.Bundle;
  8. importandroid.os.Handler;
  9. importandroid.os.Message;
  10. importandroid.view.View;
  11. importandroid.widget.Button;
  12. importandroid.widget.DatePicker;
  13. importandroid.widget.EditText;
  14. importandroid.widget.TimePicker;
  15. publicclassMainActivityextendsActivity{
  16. privateEditTextshowDate=null;
  17. privateButtonpickDate=null;
  18. privateEditTextshowTime=null;
  19. privateButtonpickTime=null;
  20. privatestaticfinalintSHOW_DATAPICK=0;
  21. privatestaticfinalintDATE_DIALOG_ID=1;
  22. privatestaticfinalintSHOW_TIMEPICK=2;
  23. privatestaticfinalintTIME_DIALOG_ID=3;
  24. privateintmYear;
  25. privateintmMonth;
  26. privateintmDay;
  27. privateintmHour;
  28. privateintmMinute;
  29. /**Calledwhentheactivityisfirstcreated.*/
  30. @Override
  31. publicvoidonCreate(BundlesavedInstanceState){
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.main);
  34. initializeViews();
  35. finalCalendarc=Calendar.getInstance();
  36. mYear=c.get(Calendar.YEAR);
  37. mMonth=c.get(Calendar.MONTH);
  38. mDay=c.get(Calendar.DAY_OF_MONTH);
  39. mHour=c.get(Calendar.HOUR_OF_DAY);
  40. mMinute=c.get(Calendar.MINUTE);
  41. setDateTime();
  42. setTimeOfDay();
  43. }
  44. /**
  45. *初始化控件和UI视图
  46. */
  47. privatevoidinitializeViews(){
  48. showDate=(EditText)findViewById(R.id.showdate);
  49. pickDate=(Button)findViewById(R.id.pickdate);
  50. showTime=(EditText)findViewById(R.id.showtime);
  51. pickTime=(Button)findViewById(R.id.picktime);
  52. pickDate.setOnClickListener(newView.OnClickListener(){
  53. @Override
  54. publicvoidonClick(Viewv){
  55. Messagemsg=newMessage();
  56. if(pickDate.equals((Button)v)){
  57. msg.what=MainActivity.SHOW_DATAPICK;
  58. }
  59. MainActivity.this.dateandtimeHandler.sendMessage(msg);
  60. }
  61. });
  62. pickTime.setOnClickListener(newView.OnClickListener(){
  63. @Override
  64. publicvoidonClick(Viewv){
  65. Messagemsg=newMessage();
  66. if(pickTime.equals((Button)v)){
  67. msg.what=MainActivity.SHOW_TIMEPICK;
  68. }
  69. MainActivity.this.dateandtimeHandler.sendMessage(msg);
  70. }
  71. });
  72. }
  73. /**
  74. *设置日期
  75. */
  76. privatevoidsetDateTime(){
  77. finalCalendarc=Calendar.getInstance();
  78. mYear=c.get(Calendar.YEAR);
  79. mMonth=c.get(Calendar.MONTH);
  80. mDay=c.get(Calendar.DAY_OF_MONTH);
  81. updateDateDisplay();
  82. }
  83. /**
  84. *更新日期显示
  85. */
  86. privatevoidupdateDateDisplay(){
  87. showDate.setText(newStringBuilder().append(mYear).append("-")
  88. .append((mMonth+1)<10?"0"+(mMonth+1):(mMonth+1)).append("-")
  89. .append((mDay<10)?"0"+mDay:mDay));
  90. }
  91. /**
  92. *日期控件的事件
  93. */
  94. privateDatePickerDialog.OnDateSetListenermDateSetListener=newDatePickerDialog.OnDateSetListener(){
  95. publicvoidonDateSet(DatePickerview,intyear,intmonthOfYear,
  96. intdayOfMonth){
  97. mYear=year;
  98. mMonth=monthOfYear;
  99. mDay=dayOfMonth;
  100. updateDateDisplay();
  101. }
  102. };
  103. /**
  104. *设置时间
  105. */
  106. privatevoidsetTimeOfDay(){
  107. finalCalendarc=Calendar.getInstance();
  108. mHour=c.get(Calendar.HOUR_OF_DAY);
  109. mMinute=c.get(Calendar.MINUTE);
  110. updateTimeDisplay();
  111. }
  112. /**
  113. *更新时间显示
  114. */
  115. privatevoidupdateTimeDisplay(){
  116. showTime.setText(newStringBuilder().append(mHour).append(":")
  117. .append((mMinute<10)?"0"+mMinute:mMinute));
  118. }
  119. /**
  120. *时间控件事件
  121. */
  122. privateTimePickerDialog.OnTimeSetListenermTimeSetListener=newTimePickerDialog.OnTimeSetListener(){
  123. @Override
  124. publicvoidonTimeSet(TimePickerview,inthourOfDay,intminute){
  125. mHour=hourOfDay;
  126. mMinute=minute;
  127. updateTimeDisplay();
  128. }
  129. };
  130. @Override
  131. protectedDialogonCreateDialog(intid){
  132. switch(id){
  133. caseDATE_DIALOG_ID:
  134. returnnewDatePickerDialog(this,mDateSetListener,mYear,mMonth,
  135. mDay);
  136. caseTIME_DIALOG_ID:
  137. returnnewTimePickerDialog(this,mTimeSetListener,mHour,mMinute,true);
  138. }
  139. returnnull;
  140. }
  141. @Override
  142. protectedvoidonPrepareDialog(intid,Dialogdialog){
  143. switch(id){
  144. caseDATE_DIALOG_ID:
  145. ((DatePickerDialog)dialog).updateDate(mYear,mMonth,mDay);
  146. break;
  147. caseTIME_DIALOG_ID:
  148. ((TimePickerDialog)dialog).updateTime(mHour,mMinute);
  149. break;
  150. }
  151. }
  152. /**
  153. *处理日期和时间控件的Handler
  154. */
  155. HandlerdateandtimeHandler=newHandler(){
  156. @Override
  157. publicvoidhandleMessage(Messagemsg){
  158. switch(msg.what){
  159. caseMainActivity.SHOW_DATAPICK:
  160. showDialog(DATE_DIALOG_ID);
  161. break;
  162. caseMainActivity.SHOW_TIMEPICK:
  163. showDialog(TIME_DIALOG_ID);
  164. break;
  165. }
  166. }
  167. };
  168. }

【4】程序运行效果图:


更多相关文章

  1. Android(安卓)常用控件讲解
  2. android控件常用属性区别
  3. android 时间
  4. Android实训_2020/6/16
  5. Android常见控件初探
  6. Android怎样修改系统时间?
  7. Android中设置控件可见与不可见详…
  8. FrameLayout 帧布局
  9. Android(安卓)自定义控件-SnakeLayout (仿gallery)

随机推荐

  1. View的刷新机制
  2. android:三种菜单(Menu)的设置
  3. Android(安卓)fragment 重叠问题,闪退后fr
  4. android:layout_marginEnd隐藏的坑 or se
  5. Android(安卓)Studio中的typo波浪线提示
  6. android 8.0 报错StartForeground Bad No
  7. Android(安卓)Txt文本读写类源代码
  8. Android(安卓)设备管理器 理解和使用
  9. Android(安卓)自定义标签 Imagebutton实
  10. 页面js判断浏览器类型