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
- DatePicker、TimePicker基本用法
- Android基本控件---DatePicker,TimePicker
- spinner,timepicker,datePicker的用法
- Android基本组件08(DatePicker,TimePicker)
- Android-基本控件(DatePicker 和 TimePicker)
- TimePicker 和 DatePicker 的基本使用
- Silverlight Toolkit 中 DatePicker & TimePicker 的用法
- 关于DatePicker 和 TimePicker 的简单用法
- DatePicker/TimePicker
- DatePicker、TimePicker
- DatePicker,TimePicker
- TimePicker+DatePicker
- DatePicker&TimePicker
- 04 - 基本控件:DatePicker日期选择器、TimePicker时间选择器
- 日期和时间选择器(DatePicker与TimePicker的用法)
- Android DatePicker and TimePicker
- android&&DatePicker&&TimePicker
- Menu DatePicker TimePicker
- ubuntu11.04 安装低版本gcc 和g++(本文介绍了4.4版和3.4版的安装方法)
- 关于checked全选与反选问题
- 创建型模式之原型模式(创建工作周报)
- 最小生成树的prim算法
- Android启动过程深入解析
- DatePicker、TimePicker基本用法
- php利用header导出.doc或者.xls文件
- 第一天开通博客
- Python函数
- Java语法糖---伪泛型
- ubuntu 环境下安装 scrapy
- 解决Gradle DSL method not found :'android()'
- CentOS 7 上 企业级监控 Nagios XI 的安装过程
- 客户常见错误及解决方案