Android SDK Tutorials系列 - Hello Views - Time Picker

来源:互联网 发布:淘宝苹果授权书 编辑:程序博客网 时间:2024/05/17 08:56

Time Picker

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

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

  1. 创建一个公车:HelloTimePicker.
  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="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时间选择器对话框。

  3. 打开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。

  4. 修改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显示当前时间。

  5. 添加updateDisplay() 和pad() 方法:
    // updates the time we display in the TextViewprivate 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 TextViewpad()方法将个位数前面加0.

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

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

  7. 添加onCreateDialog(int) 回调函数:
    @Overrideprotected 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 (时间选择器对话框)。

  8. 运行应用。

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

Hello TimePicker



返回 Android SDK Tutorials系列 - Hello Views

转载请注明出处:http://blog.csdn.net/mtding/article/details/6966704

原创粉丝点击