一步一步学android控件(之十三) —— TimePicker

来源:互联网 发布:郭广昌 知乎 编辑:程序博客网 时间:2024/05/07 11:33

TimePicker和DatePicker类似——都是用于确保用户选择的时间或日期是有效的。TimePicker是时间选择器,支持24小时制和12(AM/PM)小时制。可以用OnTimeChangedListener监听TimePicker时间变化。

先看看效果图:

                

     24小时制TimePicker                                                     12小时制TimePicker


时间发生改变后,显示一个Toast提示时间改变。

下面实现上面的效果:

1、创建布局文件widget_timepicker_layout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TimePicker        android:id="@+id/show_time_widget"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"        android:layout_marginTop="104dp" /></RelativeLayout>
2、显示屏幕 WidgetTimePickerActivity.java

package com.xy.zt.selfdefinewieget;import android.app.Activity;import android.os.Bundle;import android.provider.Settings;import android.widget.TimePicker;import android.widget.Toast;public class WidgetTimePickerActivity extends Activity implements        TimePicker.OnTimeChangedListener {    private TimePicker mTimePicker;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.widget_timepicker_layout);        init();    }    private void init() {        mTimePicker = (TimePicker) findViewById(R.id.show_time_widget);        mTimePicker.setOnTimeChangedListener(this);    }    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {        Toast.makeText(this, "Time changed in TimePicker", Toast.LENGTH_LONG)                .show();    }    @Override    protected void onResume() {        super.onResume();        String timeStr = Settings.System.getString(getContentResolver(),                Settings.System.TIME_12_24);        boolean is_24 = timeStr != null && timeStr.equals("24");        mTimePicker.setIs24HourView(is_24);    }}
上述代码各个功能不一一详述了,讲讲我在使用中遇到的一点问题,对代码:

String timeStr = Settings.System.getString(getContentResolver(),                Settings.System.TIME_12_24);        boolean is_24 = timeStr != null && timeStr.equals("24");
第一句中timeStr的值可能为12、24、null,如果返回值是null,那么如何判断当前的日期是12小时制还是24小时制?有兴趣的童鞋可以研究研究。

为完善工程,还是贴出下面代码,以下内容有不清楚的地方参见一步一步学android控件(之一) —— 开始篇

ViewData.java

public static final int TIME_PICKER_ID = DATE_PICKER_ID + 1;    public static final String TIME_PICKER_NAME = "TimePicker";private static final ViewData mTimePicker = new ViewData(TIME_PICKER_NAME,            TIME_PICKER_ID);View_Datas.add(mTimePicker);

WidgetsAdapter.java的handleItemClicked方法添加如下内容

case ViewData.TIME_PICKER_ID:            intent.setClass(mContext, WidgetTimePickerActivity.class);            mContext.startActivity(intent);            break;


TimePicker控件就学完了,下一个控件NumberPicker。



原创粉丝点击