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

本文详细介绍了Android中TimePicker组件的使用方法及其实现原理,包括如何创建布局文件、显示时间选择器,以及如何通过OnTimeChangedListener监听时间变化并展示Toast提示。同时,文章还分享了一个在使用过程中遇到的问题,即如何判断当前系统是12小时制还是24小时制,提供了解决方案。此外,文章还提及了下一步将要学习的控件NumberPicker,并附上了代码示例和部分功能介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值