本文出自:http://blog.csdn.net/dt235201314/article/details/78718066
一丶效果图
二丶概述
说好的关于时间控件整理,这里就说说常用的自定义,关于基础其他文章写得太详细了
基础学习:
API在线文档Data Calendar DateFormat
三丶需求分析
1.滑动选择时间确定到日,不可选择未来时间(年月日都不能超过当前月数)
2.自定义
通常涉及到时间控件,1.选择时间,查询数据;2选择时间上报数据
四丶看代码
1.DateSelectDialog.Java
public class DateSelectDialog extends Dialog implements OnClickListener { private Context mContext; /** * 事件选取完毕监听 */ private OnDateSelectFinished onDateSelectFinished; /** * 确认 */ private Button mOk; /** * 返回 */ private Button mBack; /** * 开始、结束年份 */ private static int START_YEAR = 1990, END_YEAR = 2100; /** * 最大年龄 */ private final int LARGEST_AGE = 119; /** * 年 */ private WheelView mYearView; /** * 月 */ private WheelView mMonthView; /** * 日 */ private WheelView mDayView; /** * 时 */ private WheelView mHourView; /** * 分 */ private WheelView mMinuteView; /** * list列表(大月份) */ private List<String> mListBig; /** * list列表(小月份) */ private List<String> mListLittle; /* 是否只选择本年 */ private boolean isOnlyThisYear = false; private boolean isShowMinute = false; /* 是否只选择本月 */ private boolean isOnlyThisMonth = false; public static final String YEAR = "year"; public static final String MONTH = "month"; public static final String DAY = "day"; int year; int month; int day; int hour; int minute; int curYear; int curMonth; int curDay; boolean HourMinuteVisiable; /** * 是否只是显示本年和本月的时间选择器 * * @param context context * @param date 传入的时间 格式 2017-2-13 * @param onDateSelectFinished onDateSelectFinished * @param isOnlyThisYear isOnlyThisYear 是否只显示本年 * @param isOnlyThisMonth isOnlyThisMonth 是否只显示本月 */ public DateSelectDialog(Context context, String date, OnDateSelectFinished onDateSelectFinished, boolean isOnlyThisYear, boolean isOnlyThisMonth) { super(context, R.style.DialogTheme); setContentView(R.layout.date_layout); this.mContext = context; this.onDateSelectFinished = onDateSelectFinished; this.isOnlyThisYear = isOnlyThisYear; this.isOnlyThisMonth = isOnlyThisMonth; init(date, true); } /** * <br> </br> * * @param context */ public DateSelectDialog(Context context, String date, OnDateSelectFinished onDateSelectFinished) { super(context, R.style.DialogTheme); setContentView(R.layout.date_layout); this.mContext = context; this.onDateSelectFinished = onDateSelectFinished; init(date, true); } public DateSelectDialog(Context context, String date, OnDateSelectFinished onDateSelectFinished, boolean isShowHour) { super(context, R.style.DialogTheme); setContentView(R.layout.date_layout); this.mContext = context; this.onDateSelectFinished = onDateSelectFinished; init(date, isShowHour); } private void init(String date, boolean isShowHour) { Calendar calendar = Calendar.getInstance(); curYear = calendar.get(Calendar.YEAR); curMonth = calendar.get(Calendar.MONTH) + 1; curDay = calendar.get(Calendar.DATE); hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); String[] ymd = date.split("-"); if (ymd.length > 2) { curYear = Integer.parseInt(ymd[0]); curMonth = Integer.parseInt(ymd[1]) - 1; String[] dhm = ymd[2].split(" "); curDay = Integer.parseInt(dhm[0]); if (dhm != null && dhm.length > 1) { String[] hm = dhm[1].split(":"); if (hm.length > 1) { hour = Integer.parseInt(hm[0])