您的位置:首页 > 移动开发 > Android开发

Android SDK Tutorials系列 - Hello Views - Time Picker

2011-11-14 00:36 465 查看


Time Picker

可以用TimePicker窗口小部件来选择时间,这个小部件允许用户选择小时和分钟。

本教程里,点击界面上的按钮,将弹出一个浮动的时间选择器对话框TimePickerDialog。当用户设置时间后,TextView将显示刚设的时间。

创建一个公车:HelloTimePicker.

打开
res/layout/main.xml
并修改如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/timeDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
<Button android:id="@+id/pickTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Change the time"/>
</LinearLayout>


这是一个基本的LinearLayout布局,里面的TextView显示时间,点击Button则打开TimePickerDialog时间选择器对话框。

打开
HelloTimePicker.java
并添加下列成员变量:
private TextView mTimeDisplay;
private Button mPickTime;

private int mHour;
private int mMinute;

static final int TIME_DIALOG_ID = 0;


这些成员变量是布局元素、时分。
TIME_DIALOG_ID
是静态整型值,作为时间选择器对话框的ID。

修改
onCreate()
如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// capture our View elements
mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
mPickTime = (Button) findViewById(R.id.pickTime);

// add a click listener to the button
mPickTime.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});

// get the current time
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);

// display the current date
updateDisplay();
}


首先,加载main.xml布局文件,然后调用findViewById(int)来获得对TextView和Button的引用,

接着给Button添加一个点击事件监听器View.OnClickListener,因此当点击Button后,

回调函数
showDialog(int)(参数是对话框ID)
将被调用来显示时间选择器对话框。

showDialog(int)
方法让当前Activity管理对话框的生命周期,

同时调用
onCreateDialog(int)
回调函数显示对话框。

在设置点击事件监听器以后,创建一个Calendar对象,读取当前小时、分钟。

最后,调用
updateDisplay()
方法,让TextView显示当前时间。

添加
updateDisplay()
pad()
方法:
// updates the time we display in the TextView
private void updateDisplay() {
mTimeDisplay.setText(
new StringBuilder()
.append(pad(mHour)).append(":")
.append(pad(mMinute)));
}

private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}


updateDisplay()
方法用时分成员变量的值设置
mTimeDisplay
TextView。pad()方法将个位数前面加0.


添加成员
TimePickerDialog.OnTimeSetListener
,它将在用户设置时间的时候被调用:
// the callback received when the user "sets" the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
updateDisplay();
}
};


当用户设置好时间(点击"Set" (“设置”)按钮),
onTimeSet()
方法会被调用来更新成员变量时分的值,并更新TextView显示的内容。

添加
onCreateDialog(int)
回调函数:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
return new TimePickerDialog(this,
mTimeSetListener, mHour, mMinute, false);
}
return null;
}


这是一个Activity回调函数,传递给它的整型ID来自
showDialog(int)
方法(这个方法在按钮的View.OnClickListener监听器里被调用)的参数。当这个ID满足switch条件时,会使用按钮点击事件监听器TimePickerDialog.OnTimeSetListener(前面步骤里创建的)、时分成员变量(在onCreate()末尾被初始化的)来实例化一个TimePickerDialog (时间选择器对话框)。

运行应用。

当你按下"Change the time"(“更改时间”)按钮,会看到以下画面:



返回 Android
SDK Tutorials系列 - Hello Views

转载请注明出处:/article/11130786.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: