DatePickerDialog 与TimePickerDialog 应用
①新建工程
②修改 main.xml 布局,添加两个按钮、一个 TextView
1 <?xml version="1.0" encoding="utf-8"?>
2 <AbsoluteLayout
3 android:id="@+id/widget0"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 xmlns:android="http://schemas.android.com/apk/res/android">
7 <Button
8 android:id="@+id/show_DatePicker"
9 android:layout_width="150px"
10 android:layout_height="wrap_content"
11 android:layout_x="10px"
12 android:layout_y="10px" android:text="显示日期设置对话框"/>
13 <Button
14 android:id="@+id/show_TimePicker"
15 android:layout_width="150px"
16 android:layout_height="wrap_content"
17 android:layout_x="10px"
18 android:layout_y="70px" android:text="显示时间设置对话框"/>
19 <TextView
20 android:id="@+id/my_TextView"
21 android:layout_width="228px"
22 android:text="TextView"
23 android:layout_x="10px"
24 android:layout_y="180px"
25 android:layout_height="45px"
26 android:textSize="20px"/>
27 </AbsoluteLayout>
复制代码
③DatePickerDialog 的定义与初始化以及显示
28 /* 定义 程序用到的UI元素对象:日历设置器对话框 */
29 DatePickerDialog my_datePickerDialog;
30 /*构造一个DatePickerDialog对象,第一个参数为Context、
31 * 第二参数为日期修改事件处理监听器、后面为初始化的年月日*/
32 my_datePickerDialog=new DatePickerDialog(Ex_Ctrl_15_B.this,
33 myDateSetListener, my_Year, my_Month, my_Day);
34 /*显示出日期设置对话框*/
35 my_datePickerDialog.show();
复制代码
④DatePickerDialog 的日期修改事件处理
36 /*日期改变设置事件监听器*/
37 private OnDateSetListener myDateSetListener=new OnDateSetListener(){
38 @Override
39 public void onDateSet(DatePicker view, int year, int monthOfYear,
40 int dayOfMonth) {
41
42 //
43
44 TODO Auto-generated method stub
45
46 /*日期改变设置事件处理*/
47 }
48 };
复制代码
⑤TimePickerDialog 的定义与初始化以及显示
49 /* 定义 程序用到的UI元素对象:时间设置器对话框*/
50 TimePickerDialog my_timePickerDialog;
51 /*构造一个TimePickerDialog对象,第一个参数为Context、
52 *第二个参数为时间修改事件监听器、后面两个为初始化时间,
53 *最后一个boolean类型设置是否为24小时制*/
54 my_timePickerDialog=new TimePickerDialog(Ex_Ctrl_15_B.this,
55 myTimeSetListener, my_Hour, my_Minute, false);
56 /*显示出日期设置对话框*/
57 my_timePickerDialog.show();
复制代码
⑥TimePickerDialog 的时间修改事件处理
58 /*时间改变设置事件监听器*/
59 private OnTimeSetListener myTimeSetListener=new OnTimeSetListener(){
60 @Override
61 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
62 // TODO Auto-generated method stub
63 /*时间改变设置事件处理*/
64 }
65 };
复制代码
⑦修改 mainActivity.java,实现动态显示修改的日期、时间
66 package zyf.Ex_Ctrl_15_B;
67 /*导入使用的包*/
68 import java.util.Calendar;
69 import java.util.Locale;
70 import android.app.Activity;
71 import android.app.DatePickerDialog;
72 import android.app.TimePickerDialog;
73 import android.app.DatePickerDialog.OnDateSetListener;
74 import android.app.TimePickerDialog.OnTimeSetListener;
75 import android.os.Bundle;
76 import android.view.View;
77
78 import
79 import
80 import
81 import
82
83
84 android.widget.Button;
85 android.widget.DatePicker;
86 android.widget.TextView;
87 android.widget.TimePicker;
88
89
90
91 public class Ex_Ctrl_15_B extends Activity implements Button.OnClickListener{
92 /** Called when the activity is first created. */
93 /* 定义时间变量:年、月、日、小时、分钟 */
94 int my_Year;
95 int my_Month;
96 int my_Day;
97 int my_Hour;
98 int my_Minute;
99 /* 定义 程序用到的UI元素对象:日历设置器对话框、时间设置器对话框、
100 显示时间的TextView、按钮 */
101 DatePickerDialog my_datePickerDialog;
102 TimePickerDialog my_timePickerDialog;
103 TextView showDate_Time;
104 Button showDatePDialog;
105 Button showTimePDialog;
106 /* 定义日历对象,初始化时,用来获取当前时间 */
107 Calendar my_Calendar;
108 /*日期改变设置事件监听器*/
109 private OnDateSetListener myDateSetListener=new OnDateSetListener(){
110 @Override
111 public void onDateSet(DatePicker view, int year,
112
113 int monthOfYear,
114
115 int dayOfMonth) {
116
117 // TODO Auto-generated method stub
118 /*把设置修改后的日期赋值给我的年、月、日变量*/
119 my_Year=year;
120 my_Month=monthOfYear;
121 my_Day=dayOfMonth;
122 /*显示设置后的日期*/
123 loadDate_Time();
124 }
125 };
126 /*时间改变设置事件监听器*/
127 private OnTimeSetListener myTimeSetListener=new OnTimeSetListener(){
128 @Override
129 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
130 // TODO Auto-generated method stub
131 /*把设置修改后的时间赋值给我的时、分变量*/
132 my_Hour=hourOfDay;
133 my_Minute=minute;
134
135 /*显示设置后的时间*/
136 loadDate_Time();
137 }
138 };
139 @Override
140 public void onCreate(Bundle savedInstanceState) {
141 /* 从Calendar抽象基类获得实例对象,并设置成中国时区 */
142 my_Calendar = Calendar.getInstance(Locale.CHINA);
143 /* 从日历对象中获取当前的:年、月、日、时、分 */
144 my_Year = my_Calendar.get(Calendar.YEAR);
145 my_Month = my_Calendar.get(Calendar.MONTH);
146 my_Day = my_Calendar.get(Calendar.DAY_OF_MONTH);
147 my_Hour = my_Calendar.get(Calendar.HOUR_OF_DAY);
148 my_Minute = my_Calendar.get(Calendar.MINUTE);
149 super.onCreate(savedInstanceState);
150 setContentView(R.layout.main);
151 /* findViewById()从XML中获取UI元素对象 */
152 showDate_Time = (TextView) findViewById(R.id.my_TextView);
153 showDatePDialog=(Button)findViewById(R.id.show_DatePicker);
154 showTimePDialog=(Button)findViewById(R.id.show_TimePicker);
155 /*显示当前时间*/
156 loadDate_Time();
157 /*为按钮添加点击事件监听器*/
158 showDatePDialog.setOnClickListener(this);
159 showTimePDialog.setOnClickListener(this);
160 }
161 /* 设置显示日期时间的方法 */
162 private void loadDate_Time() {
163 // TODO Auto-generated method stub
164 showDate_Time.setText(new StringBuffer()
165 .append(my_Year).append("/")
166 .append(FormatString(my_Month + 1))
167 .append("/").append(FormatString(my_Day))
168 .append(" ").append(FormatString(my_Hour))
169 .append(" : ").append(FormatString(my_Minute)));
170 }
171 /* 日期时间显示两位数的方法 */
172 private String FormatString(int x) {
173 String s = Integer.toString(x);
174 if (s.length() == 1) {
175 s = "0" + s;
176 }
177 return s;
178 }
179
180 @Override
181 public void onClick(View v) {
182 // TODO Auto-generated method stub
183 switch (v.getId()) {
184 case R.id.show_DatePicker:
185 /*显示日期设置对话框的按钮点击事件处理*/{
186 /*构造一个DatePickerDialog对象,第一个参数为Context、
187 第二参数为日期修改事件处理监听器、后面为初始化的年月日*/
188 my_datePickerDialog=new DatePickerDialog(Ex_Ctrl_15_B.this,
189 myDateSetListener, my_Year, my_Month, my_Day);
190 /*显示出日期设置对话框*/
191 my_datePickerDialog.show();
192 }
193 break;
194 case R.id.show_TimePicker:
195 /*显示时间设置对话框的按钮点击事件处理*/{
196 /*构造一个TimePickerDialog对象,第一个参数为Context、第二个参数为时间修改
197 事件监听器、后面两个为初始化时间,最后一个boolean类型设置是否为24小时制*/
198 my_timePickerDialog=new TimePickerDialog(Ex_Ctrl_15_B.this,
199 myTimeSetListener, my_Hour, my_Minute, false);
200 /*显示出日期设置对话框*/
201 my_timePickerDialog.show();
202 }
203 break;
204 default:
205 break;
206 }
207 }
208 }
复制代码
结果: