package com.codbking.widget;
|
|
import android.annotation.SuppressLint;
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.os.Bundle;
|
import android.support.annotation.StringRes;
|
import android.text.TextUtils;
|
import android.view.Gravity;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.WindowManager;
|
import android.widget.FrameLayout;
|
import android.widget.TextView;
|
|
import com.codbking.widget.bean.DateType;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
|
|
/**
|
* Created by codbking on 2016/8/11.
|
*/
|
public class DatePickDialog extends Dialog implements OnChangeListener, View.OnClickListener {
|
|
private TextView titleTv;
|
private FrameLayout wheelLayout;
|
private TextView cancel;
|
private TextView sure;
|
private TextView next;
|
private ViewGroup rlSure;
|
private ViewGroup rlNext;
|
private TextView messgeTv;
|
|
private String title;
|
private String format;
|
private DateType type = DateType.TYPE_ALL;
|
|
//开始时间
|
private Date startDate = new Date();
|
//年分限制,默认上下5年
|
private int yearLimt = 5;
|
|
private OnChangeListener onChangeListener;
|
private View.OnClickListener onCancelListener;
|
private OnSureListener onSureListener;
|
private OnSureListener onNextListener;
|
|
private DatePicker mDatePicker;
|
|
//设置标题
|
public void setTitle(String title) {
|
this.title = title;
|
}
|
|
//设置模式
|
public void setType(DateType type) {
|
this.type = type;
|
}
|
|
//设置选择日期显示格式,设置显示message,不设置不显示message
|
public void setMessageFormat(String format) {
|
this.format = format;
|
}
|
|
//设置开始时间
|
public void setStartDate(Date startDate) {
|
this.startDate = startDate;
|
}
|
|
//设置年份限制,上下年份
|
public void setYearLimt(int yearLimt) {
|
this.yearLimt = yearLimt;
|
}
|
|
//设置选择回调
|
public void setOnChangeListener(OnChangeListener onChangeListener) {
|
this.onChangeListener = onChangeListener;
|
}
|
|
public void setOnCancelListener(View.OnClickListener onClickListener) {
|
this.onCancelListener = onClickListener;
|
}
|
|
//设置点击确定按钮,回调
|
public void setOnSureListener(OnSureListener onSureListener) {
|
this.onSureListener = onSureListener;
|
if (rlSure != null) rlSure.setVisibility(View.VISIBLE);
|
}
|
|
/**
|
* 设置点击确定按钮,回调
|
*/
|
public void setOnNextListener(OnSureListener onNextListener) {
|
this.onNextListener = onNextListener;
|
if (rlNext != null) rlNext.setVisibility(View.VISIBLE);
|
}
|
|
/**
|
* 设置否定的按钮回调:取消
|
*/
|
public void setNegativeButton(CharSequence str, View.OnClickListener onClickListener) {
|
if (!TextUtils.isEmpty(str)) {
|
cancel.setText(str);
|
}
|
setOnCancelListener(onClickListener);
|
}
|
|
/**
|
* 设置否定的按钮回调:取消
|
*/
|
public void setNegativeButton(@StringRes int stringRes, View.OnClickListener onClickListener) {
|
setNegativeButton(getContext().getResources().getString(stringRes), onClickListener);
|
}
|
|
/**
|
* 设置点击确定按钮,回调
|
*/
|
public void setPositiveButton(CharSequence str, OnSureListener onSureListener) {
|
if (!TextUtils.isEmpty(str)) {
|
sure.setText(str);
|
}
|
setOnSureListener(onSureListener);
|
}
|
|
public void setPositiveButton(@StringRes int stringRes, OnSureListener onSureListener) {
|
setPositiveButton(getContext().getResources().getString(stringRes), onSureListener);
|
}
|
|
|
public void setNextButton(CharSequence str, OnSureListener onSureListener) {
|
if (!TextUtils.isEmpty(str)) {
|
next.setText(str);
|
}
|
setOnNextListener(onSureListener);
|
}
|
|
public void setNextButton(@StringRes int stringRes, OnSureListener onSureListener) {
|
setNextButton(getContext().getResources().getString(stringRes), onSureListener);
|
}
|
|
public DatePickDialog(Context context) {
|
super(context, R.style.dialog_style);
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.cbk_dialog_pick_time);
|
|
initView();
|
initParas();
|
}
|
|
private DatePicker getDatePicker() {
|
DatePicker picker = new DatePicker(getContext(), type);
|
picker.setStartDate(startDate);
|
picker.setYearLimt(yearLimt);
|
picker.setOnChangeListener(this);
|
picker.init();
|
return picker;
|
}
|
|
private void initView() {
|
sure = (TextView) findViewById(R.id.tv_sure);
|
next = (TextView) findViewById(R.id.tv_next);
|
cancel = (TextView) findViewById(R.id.tv_cancel);
|
rlSure = (ViewGroup) findViewById(R.id.rl_sure);
|
rlNext = (ViewGroup) findViewById(R.id.rl_next);
|
wheelLayout = (FrameLayout) findViewById(R.id.fl_wheel_layout);
|
titleTv = (TextView) findViewById(R.id.tv_title);
|
messgeTv = (TextView) findViewById(R.id.tv_message);
|
|
mDatePicker = getDatePicker();
|
wheelLayout.addView(mDatePicker);
|
|
//setValue
|
titleTv.setText(title);
|
|
rlSure.setVisibility(View.GONE);
|
rlNext.setVisibility(View.GONE);
|
|
cancel.setOnClickListener(this);
|
sure.setOnClickListener(this);
|
next.setOnClickListener(this);
|
|
if (onSureListener != null) {
|
rlSure.setVisibility(View.VISIBLE);
|
}
|
if (onNextListener != null) {
|
rlNext.setVisibility(View.VISIBLE);
|
}
|
|
|
/* cancel.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
dismiss();
|
}
|
});
|
|
sure.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
dismiss();
|
if (onSureListener != null) {
|
onSureListener.onSure(mDatePicker.getSelectDate());
|
}
|
}
|
});
|
next.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
dismiss();
|
if (onNextLisener != null) {
|
onNextLisener.onSure(mDatePicker.getSelectDate());
|
}
|
}
|
});*/
|
|
}
|
|
private void initParas() {
|
WindowManager.LayoutParams params = getWindow().getAttributes();
|
params.gravity = Gravity.BOTTOM;
|
params.width = DateUtils.getScreenWidth(getContext());
|
getWindow().setAttributes(params);
|
}
|
|
@SuppressLint("SimpleDateFormat")
|
@Override
|
public void onChanged(Date date) {
|
|
if (onChangeListener != null) {
|
onChangeListener.onChanged(date);
|
}
|
|
if (!TextUtils.isEmpty(format)) {
|
String messge = "";
|
try {
|
messge = new SimpleDateFormat(format).format(date);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
messgeTv.setText(messge);
|
}
|
}
|
|
|
@Override
|
public void onClick(View view) {
|
int i = view.getId();
|
if (i == R.id.tv_cancel) {
|
dismiss();
|
if (onCancelListener != null) {
|
onCancelListener.onClick(view);
|
}
|
} else if (i == R.id.tv_sure) {
|
dismiss();
|
if (onSureListener != null) {
|
onSureListener.onSure(mDatePicker.getSelectDate());
|
}
|
} else if (i == R.id.tv_next) {
|
dismiss();
|
if (onNextListener != null) {
|
onNextListener.onSure(mDatePicker.getSelectDate());
|
}
|
}
|
}
|
}
|