Android-使用TimerPicker和DatePicker选择时间和日期
2016-03-27 15:49
881 查看
Android-使用TimerPicker和DatePicker选择时间和日期
在安卓App里面,选择时间日期也是很常见的,比如在QQ里面填写个人信息的时候,会让你选择你的出生日期,比如:
这就是大家很熟悉的QQ了
其实这个安卓已经提供好相应的工具类了,我们只需简单的调用即可,要不是今天复习遇到了,还
真不知道还有这一回事…..,所以还是要多复习,多看书。
形式上有对话框和具体的界面,每一个写一个小例子来复习一下。
话不多说还是看代码:
DatePicker日期选择界面
布局文件
<RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <DatePicker android:id="@+id/id_datePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
然后获取此时的年,月,天,时,分。
private DatePicker dp = null; private Calendar calendar = null; private int year; private int month; private int day; private int hour; private int min; private void init() { dp = (DatePicker) findViewById(R.id.id_datePicker); // 获取日历的一个对象 calendar = Calendar.getInstance(); // 获取年月日时分秒的信息 year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH)+1; day = calendar.get(Calendar.DAY_OF_MONTH); hour = calendar.get(Calendar.HOUR); min = calendar.get(Calendar.MINUTE); //设置标题 setTitle(year + "-" + month+ "-" + day + "-" + hour + ":" + min); }
主活动:
package com.xieth.as.againdatedemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.DatePicker; import android.widget.TimePicker; import java.util.Calendar; public class MainActivity extends AppCompatActivity { private TimePicker tp = null; private DatePicker dp = null; private Calendar calendar = null; private int year; private int month; private int day; private int hour; private int min; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); // 初始化DatePicker dp.init(year, calendar.get(Calendar.MONTH), day, new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setTitle(year + "-" + (monthOfYear+1) + "-" + dayOfMonth); } }); } private void init() { dp = (DatePicker) findViewById(R.id.id_datePicker); // 获取日历的一个对象 calendar = Calendar.getInstance(); // 获取年月日时分秒的信息 year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH)+1; day = calendar.get(Calendar.DAY_OF_MONTH); hour = calendar.get(Calendar.HOUR); min = calendar.get(Calendar.MINUTE); //设置标题 setTitle(year + "-" + month + "-" + day + "-" + hour + ":" + min); } }
运行效果:
感觉还是没那么爽,如果要好看的话,就要自己花时间去写了,还是试试对话框的方式.。
日期对话框
// 日期对话框 new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setTitle(year + "-" + (monthOfYear+1) + "-" + dayOfMonth); } }, year, calendar.get(Calendar.MONTH), day).show();
运行效果:
这样还是很给力的,嘿嘿。 再来试一下时间的。
TimePicker
首先在布局文件添加组件
<RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <DatePicker android:id="@+id/id_datePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TimePicker android:id="@+id/id_timePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/id_datePicker" /> </RelativeLayout>
然后在主活动获取这一组件
tp = (TimePicker) findViewById(R.id.id_timePicker);
初始化并且进行设置TimerPicker。
// 初始化并且设置TimePicker tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + ":" + minute); } });
运行效果:
可以看到上面的标题栏已经成功获取了时间,而且可以选择24小时制还是12小时制。
我觉得还是对话框比较给力。。
时间对话框
// 时间对话框 new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + ":" + minute); } }, hour, min, true).show();
最后一个参数表示的是,是否采用24小时制,true代表采用,反之就是12小时制。
运行效果:
完整代码:
package com.xieth.as.againdatedemo; import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.DatePicker; import android.widget.TimePicker; import java.util.Calendar; public class MainActivity extends AppCompatActivity { private TimePicker tp = null; private DatePicker dp = null; private Calendar calendar = null; private int year; private int month; private int day; private int hour; private int min; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); // // 初始化DatePicker // dp.init(year, calendar.get(Calendar.MONTH), day, new DatePicker.OnDateChangedListener() { // @Override // public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // setTitle(year + "-" + (monthOfYear+1) + "-" + dayOfMonth); // } // }); // 日期对话框 new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setTitle(year + "-" + (monthOfYear+1) + "-" + dayOfMonth); } }, year, calendar.get(Calendar.MONTH), day); // 初始化并且设置TimePicker tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + ":" + minute); } }); // 时间对话框 new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + ":" + minute); } }, hour, min, true).show(); } private void init() { tp = (TimePicker) findViewById(R.id.id_timePicker); dp = (DatePicker) findViewById(R.id.id_datePicker); // 获取日历的一个对象 calendar = Calendar.getInstance(); // 获取年月日时分秒的信息 year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH)+1; day = calendar.get(Calendar.DAY_OF_MONTH); hour = calendar.get(Calendar.HOUR); min = calendar.get(Calendar.MINUTE); //设置标题 setTitle(year + "-" + month + "-" + day + "-" + hour + ":" + min); } }
记录一下,还是对以后开发有点小帮助。。。
相关文章推荐
- 基于Maven创建Android应用
- 简单举例说明android自定义view的方法
- Android Data Binding框架指南
- android studio编译已签名应用
- Android收拉可定制的格网控件——ExpandTagGridBar
- Android Fragment 基本介绍
- Android Binder设计与实现 - 设计篇
- Unable to add window — token android.os.BinderProxy is not valid; is your activity running?
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- Android学习第四周_服务、广播和酷特性
- 安卓手机屏幕基础解析
- Android API Level 版本对应表
- Android 使用无线调试
- android开发全然退出activity
- Android AutoLayout全新的适配方式 堪称适配终结者
- Android 自定义控件之第三讲:obtainStyledAttributes 系列函数详解
- Android ListView监听上滑或下滑动作
- Android打包的那些事
- 理解Android Java垃圾回收机制
- 你应该知道的那些Android小经验