用DatePicker和TimePicker写的一个日历时间选择案例
2015-05-27 17:11
537 查看
先放效果图吧,如下:
其实整个例子就用了DatePicker和TimePicker来完成,非常简单。
下面简单介绍下DatePicker 、 TimePicker 。它们都继承自android.widget.FrameLayout,DatePicker用于展示一个日期选择控件,主要功能是向用户提供包含年、月、日的日期数据并允许用户对其修改。如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加OnDateChangedListener监听器;TimePicker用于展示一个时间选择控件,向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择。如果要捕获用户修改时间数据的事件,需要为TimePicker添加OnTimeChangedListener监听器。
作为一个日期选择控件,DatePicker可以通过设置属性来确定日期选择范围,也可以通过定义好的方法获取到当前选中的时间,并且在修改日期的时候,有响应的事件对其进行响应。
DatePicker的一些常用属性如:
1. android:calendarViewShown:是否显示日历
2. android:startYear : 设置可选开始年份
3. android:endYear:设置可选结束年份
4. android:maxDate:设置可选最大日期(以mm/dd/yyyy格式设置)
5. android:minDate:设置可选最小日期(以mm/dd/yyyy格式设置)
PS:注意DatePicker的一个初始化的方法init(),此方法的构造如下:
init(int year,int monthOfYear,int dayOfMonth,DatePicker.OnDateChangedListener onDateChangedListener)
init()用于DatePicker控件的初始化,并且设置日期被修改后回调的响应事件,若要响应此事件,需要实现其中的onDateChanged()方法,如下:
onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
作为一个时间选择控件来说,TimePicker需要与时间相关的getter、setter方法之外,还需要有时间被修改后回调的响应事件。
TimePicker的一些常用属性如:
1. is24HourView():判断是否为24小时制
2. setIs24HourView():设置是否为24小时制显示
3. getCurrentXxx():获取当前时间
4. setCurrentXxx():设置当前时间
5. setOnTimeChangedListener():设置时间被修改的回调方法(其传递一个 TimePicker.OnTimeChangedListener 接口,需要实现其中的onTimeChanged()方法)
下面是示例的代码
布局代码:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <!-- 日期 --> <DatePicker android:id="@+id/date" android:layout_width="fill_parent" android:layout_height="wrap_content" > </DatePicker> <Button android:id="@+id/btndate" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/btndate" /> <!-- 具体时间 --> <TimePicker android:id="@+id/time" android:layout_width="fill_parent" android:layout_height="wrap_content" > </TimePicker> <Button android:id="@+id/btntime" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/btntime" /> </LinearLayout> </ScrollView>
strings.xml文件的代码:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">DatePick</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="btndate">查看日期请点击这里</string> <string name="btntime">查看时间请点击这里</string> </resources>
MainActivity.java代码:
package com.example.datepick; import android.support.v4.app.Fragment; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.DatePicker; import android.widget.TimePicker; public class MainActivity extends Activity { DatePicker datepick; TimePicker timepick; Button btndate; Button btntime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); //获取对象 datepick=(DatePicker)findViewById(R.id.date); timepick=(TimePicker)findViewById(R.id.time); btndate=(Button)findViewById(R.id.btndate); btntime=(Button)findViewById(R.id.btntime); //点击显示日期的监听事件 btndate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { StringBuilder str=new StringBuilder("您当前选择的日期是:"); //将当前选中的年月日显示到按钮上(月份记得要+1) str.append(datepick.getYear()).append("-").append(datepick.getMonth()+1).append("-").append(datepick.getDayOfMonth()); btndate.setText(str); } }); //点击显示时间的监听事件 btntime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { StringBuilder str=new StringBuilder("您当前选择的时间是:"); //将当前选中的时间显示到按钮上 str.append(timepick.getCurrentHour()).append(":").append(timepick.getCurrentMinute()); btntime.setText(str); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } } }
附上下载地址:http://download.csdn.net/detail/monas/8746787
有问题欢迎大家指教!一起讨论一起进步!
相关文章推荐
- 使用日历选择器DatepicKer和时间选择器TimepicKer
- Android UI控件系列:DatePicker,TimePicker(日期和时间选择)
- 日期和时间选择器(DatePicker与TimePicker的用法)
- 时间、日期选择器DatePicker、TimePicker
- Windows Phone 7 日期选择控件DatePicker和时间选择控件TimePicker
- 时间和日期选择器DatePicker和TimePicker的使用
- 日期、时间选择器(DatePicker和TimePicker)的功能与用法
- Windows Phone 7 日期选择控件DatePicker和时间选择控件TimePicker
- jQuery UI Datepicker的扩展控件Timepicker实现时间选择
- Android DatePicker日期选择器、TimePicker时间选择器的使用
- [控件]DatePicker日期,TimePicker时间,Calendar日历,DatePickerDialog弹出的日期,TimePickerDialog弹出的时间
- 联合使用DatePIcker和TimePicker来选择日期和时间
- 选择时间日历控件DatePickerDialog实现(从外包项目中挖出来整理的)
- android基础-Toast提示框、日历视图(CalendarView)组件、日期、时间选择器DatePicker和TimerPicker等
- 各种杂项组件(3)之--CalendarView(日历视图)、DatePicker/TimePicker(日期、时间选择器)、NumberPicker(数值选择器)
- Android开发之日期、时间选择器(DatePicker和TimePicker)的功能和用法
- Android开发——DatePicker和TimePicker时间选择器
- Android--DatePicker和TimePicker(日历选择器与时间选择器)
- 联合使用DatePicker和TimePicker来选择日期和时间
- Android之日期时间选择控件DatePicker和TimePicker