安卓日期时间选择器TimePicker快速开发(解析+实例)
今天在某群刚好看到一群友,一需求:日期选择器TimePicker,博主花了点小时间抽出Demo分享出去了,因为一般博主比较喜欢笔记记录在本子上(翻阅起来纸张还是比较舒爽的,你懂得,哈哈),因此写此个博客记录下来,提供未来有需要开发到此功能的读者,本文仅供技术学习使用.
效果图:
一 实例(方便读者直接使用)
读者按着实例代码,就能实现上述功能到自己的项目,达到快速开发实现的功能.
二 页面源码
MainActivity 页面设置为个人中心页面,点击调用changeBirthday()方法即可
/**
* 修改生日时间选择器
*/
private void changeBirthday() {
/**
* 注意事项:
* 2.因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11
*/
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(2005, 5, 30); //弹窗默认时间
Calendar startDate = Calendar.getInstance();
startDate.set(1960, 0, 1);
Calendar endDate = Calendar.getInstance();
endDate.set(2020, 11, 31);
//时间选择器 ,自定义布局
mPvCustomTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {//选中事件回调
//判断时间是否超过当前时间
Calendar currentTime = Calendar.getInstance();
Date currentDate = currentTime.getTime();
int dateResult = date.compareTo(currentDate);
if (dateResult == 1) {
ToastUtil.toast(mContext, "您选择的时间超过了当前时间");
} else {
//显示正在上传信息的Dialog,上报新的生日
mPvCustomTime.dismiss();
mCenterDialog.show();
// todo 服务器
// mUserMessagePI.uploadUserMessage(null, null, null, getTime(date), null);
}
}
}).setDate(selectedDate)
.setRangDate(startDate, endDate)
.setLayoutRes(R.layout.pickerview_custom_time, new CustomListener() {
@Override
public void customLayout(View v) {
final TextView tvSubmit = v.findViewById(R.id.tv_confirm);
TextView tvCancel = v.findViewById(R.id.tv_cancel);
tvSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPvCustomTime.returnData();
}
});
tvCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPvCustomTime.dismiss();
}
});
}
})
.setContentTextSize(20)
.setType(new boolean[]{true, true, true, false, false, false})
.setLabel("", "", "", "", "", "")
.setLineSpacingMultiplier(1.6f)
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
.setDividerColor(mContext.getResources().getColor(R.color.transparent_00FFFFFF))
.setTextColorCenter(mContext.getResources().getColor(R.color.color_55ceac))
.build();
mPvCustomTime.show();
}
MainActivity 对应XML布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true"
android:background="@color/color_f5f5f5"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/pickerview_timebtn_nor">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="个人信息"
android:textColor="@color/white"
android:textSize="18sp"/>
</RelativeLayout>
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@color/white"
android:orientation="vertical"