DatePicker、TimePicker基本用法

来源:互联网 发布:淘宝兔妈美国代购真假 编辑:程序博客网 时间:2024/06/06 01:13

前言

在时间和日期开发中,TimePicker和DatePicker经常使用到,这俩个控件是嵌入到View中的,如果想使用弹窗式的,可是使用TimePickerDialog和DataPickerDialog。这次我主要是实现了一个带确定和取消按钮的时间选择器,为的是以后可以直接使用,不用再多写代码了。

布局

layout_timepicker.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <TextView         android:id="@+id/tv_title"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:textSize="16sp"        />    <TimePicker         android:id="@+id/timepicker"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/tv_title"        android:layout_centerHorizontal="true"        /></RelativeLayout>

layout_datepicker.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content" >    <TextView         android:id="@+id/tv_title"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="请选择日期"        android:textSize="16sp"        android:layout_alignParentTop="true"        />    <DatePicker         android:id="@+id/datepicker"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:calendarViewShown="false"        android:layout_below="@+id/tv_title"        android:layout_centerHorizontal="true"        /></RelativeLayout>

Factory

TimeFactory:

Builder mDialog;    TimePicker mTimePicker;    TextView  tv_title;    TimeFactoryListener listener;    int mHour;    int mMinute;    static TimeFactory mTimeFactory;    public static TimeFactory initFactory()    {        if(mTimeFactory == null)        {            mTimeFactory = new TimeFactory();        }        return mTimeFactory;    }    public void setFactoryListener(TimeFactoryListener listener)    {        this.listener = listener;    }    public Builder createTimePickerDialog(Context context)    {        View view = LayoutInflater.from(context).inflate(R.layout.layout_timepicker, null);        tv_title = (TextView) view.findViewById(R.id.tv_title);        mTimePicker = (TimePicker) view.findViewById(R.id.timepicker);        mDialog = new Builder(context);        mDialog.setView(view);        mTimePicker.setIs24HourView(true);        mHour = mTimePicker.getCurrentHour();        mMinute = mTimePicker.getCurrentMinute();        tv_title.setText(mHour+":"+mMinute);        mDialog.setPositiveButton("确定", onClickListener);        mDialog.setNegativeButton("取消", onClickListener);        mTimePicker.setOnTimeChangedListener(onTimeChangedListener);        return mDialog;    }    final OnTimeChangedListener onTimeChangedListener = new OnTimeChangedListener()    {        @Override        public void onTimeChanged(TimePicker view, int hour, int minute)        {            tv_title.setText(hour+":"+minute);            mHour = hour;            mMinute = minute;        }    };    final OnClickListener onClickListener = new OnClickListener()    {        @Override        public void onClick(DialogInterface dialog, int which)        {            switch (which)            {                // 确定                case -1:                    listener.setTime(mHour, mMinute);                    break;                // 取消                case -2:                    listener.cancel();                    break;                // 忽略                case -3:                    break;                default:                    break;            }        }    };    public interface TimeFactoryListener    {        public void setTime(int hour,int minute);        public void cancel();    }

DateFactory:

Builder mDialog;    TimePicker mTimePicker;    TextView  tv_title;    TimeFactoryListener listener;    int mHour;    int mMinute;    static TimeFactory mTimeFactory;    public static TimeFactory initFactory()    {        if(mTimeFactory == null)        {            mTimeFactory = new TimeFactory();        }        return mTimeFactory;    }    public void setFactoryListener(TimeFactoryListener listener)    {        this.listener = listener;    }    public Builder createTimePickerDialog(Context context)    {        View view = LayoutInflater.from(context).inflate(R.layout.layout_timepicker, null);        tv_title = (TextView) view.findViewById(R.id.tv_title);        mTimePicker = (TimePicker) view.findViewById(R.id.timepicker);        mDialog = new Builder(context);        mDialog.setView(view);        mTimePicker.setIs24HourView(true);        mHour = mTimePicker.getCurrentHour();        mMinute = mTimePicker.getCurrentMinute();        tv_title.setText(mHour+":"+mMinute);        mDialog.setPositiveButton("确定", onClickListener);        mDialog.setNegativeButton("取消", onClickListener);        mTimePicker.setOnTimeChangedListener(onTimeChangedListener);        return mDialog;    }    final OnTimeChangedListener onTimeChangedListener = new OnTimeChangedListener()    {        @Override        public void onTimeChanged(TimePicker view, int hour, int minute)        {            tv_title.setText(hour+":"+minute);            mHour = hour;            mMinute = minute;        }    };    final OnClickListener onClickListener = new OnClickListener()    {        @Override        public void onClick(DialogInterface dialog, int which)        {            switch (which)            {                // 确定                case -1:                    listener.setTime(mHour, mMinute);                    break;                // 取消                case -2:                    listener.cancel();                    break;                // 忽略                case -3:                    break;                default:                    break;            }        }    };    public interface TimeFactoryListener    {        public void setTime(int hour,int minute);        public void cancel();    }

主要的实现方法就是,在initFactory中实例化工厂,通过createDialog方法创建带时间选择器的窗口,在点击窗口按钮的时间回调主界面的方法,以达到数据交互的目的。

使用方法

MainActivity:

DateFactory factory = DateFactory.initFactory();                factory.setFactoryListener(new DateFactoryListener()                {                    @Override                    public void setDate(int year, int monthOfYear, int dayOfMonth)                    {                        tv_date.setText(year + "-" + (monthOfYear+1) + "-" + dayOfMonth);                    }                    @Override                    public void cancel()                    {                    }                });                factory.createDatePickerDialog(MainActivity.this).show();
TimeFactory factory = TimeFactory.initFactory();                factory.setFactoryListener(new TimeFactoryListener()                {                    @Override                    public void setTime(int hour, int minute)                    {                        tv_date.setText(hour + ":" + minute);                    }                    @Override                    public void cancel()                    {                    }                });                factory.createTimePickerDialog(MainActivity.this).show();

虽然代码看上去比直接使用多了不少,但是以后就可以直接使用Factory类来操作时间了,以后的开发过程省去了不少时间。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高跟鞋子大了怎么办 高跟鞋走路很响怎么办 小妙招鞋后跟响怎么办 高跟鞋后面磨脚怎么办 穿高跟鞋崴着脚了怎么办 亚麻裤缩水了怎么办 怎么办一个人保定损点 淘宝遇到职业敲诈怎么办 三无燕窝被打假怎么办 碰上职业打假的怎么办 遇到专业打假的怎么办 手机wifi被劫持怎么办 手机网页乱跳怎么办 老公说话不算话怎么办 编曲接不到活怎么办 电表显示跳闸黄灯怎么办 硫酸铬钾中毒怎么办 门锁能扭动却打不开怎么办 防盗门保险坏了怎么办 厦门工会卡过期怎么办 阴雨天被子受潮怎么办 衣服晾臭了怎么办 喷砂机油水分离泵有油怎么办 水太烫玻璃瓶盖打不开怎么办 玻璃罐的玻璃盖打不开怎么办? 开红酒没有开瓶器怎么办 手机卡突然坏了怎么办 滚筒洗衣机打不开门怎么办 全自动洗衣机门开不开怎么办 好期待评分不足怎么办 单片机数码管亮度低怎么办 猫的同轴灯不亮怎么办 楼下邻居太吵怎么办 冰箱冷却液内露怎么办 冷却水没有了会怎么办 金立m7信号不好怎么办 csgo凉了饰品怎么办 模型拟合度低怎么办 石膏线用发泡胶怎么办 电表上显示err10怎么办 电表显示欠压怎么办