| | |
| | | package cn.com.basic.face.dialog;
|
| | |
|
| | | import android.app.AlertDialog;
|
| | | import android.app.DatePickerDialog;
|
| | | import android.content.Context;
|
| | | import android.graphics.Color;
|
| | | import android.os.Bundle;
|
| | |
| | | import android.widget.DatePicker;
|
| | |
|
| | | import com.bsk.zhangbo.demoforbsk.R;
|
| | | import com.lidroid.xutils.ViewUtils;
|
| | | import com.lidroid.xutils.view.annotation.event.OnClick;
|
| | |
|
| | | import java.util.Calendar;
|
| | | import java.util.Date;
|
| | | import java.util.Locale;
|
| | |
|
| | | /**
|
| | | * Created by Sinoe on 2017/2/28.
|
| | | */
|
| | | import cn.com.basic.face.base.MainActivity;
|
| | | import cn.com.basic.face.util.OkClickedListener;
|
| | |
|
| | | public class BirthdayPickerDialog extends AlertDialog implements
|
| | | DatePicker.OnDateChangedListener{
|
| | |
|
| | |
|
| | | private static final String YEAR = "year";
|
| | | private static final String MONTH = "month";
|
| | | private static final String DAY = "day";
|
| | |
|
| | | private final DatePicker mDatePicker;
|
| | | private final OnDateSetListener mDateSetListener;
|
| | | private final OkClickedListener mDateSetListener;
|
| | | private final Calendar mCalendar;
|
| | |
|
| | | private boolean mTitleNeedsUpdate = true;
|
| | |
|
| | | private View view;
|
| | | public BirthdayPickerDialog(Context context, int theme, OnDateSetListener listener, Date date) {
|
| | | super(context,theme);
|
| | | public BirthdayPickerDialog(OkClickedListener listener, Date date) {
|
| | | super(MainActivity.getInstance(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar);
|
| | | mDateSetListener = listener;
|
| | | mCalendar = Calendar.getInstance(Locale.CHINA);
|
| | | mCalendar.setTime(date);
|
| | |
| | | LayoutInflater inflater = LayoutInflater.from(themeContext);
|
| | | view = inflater.inflate(R.layout.dialog_date_picker, null);
|
| | | view.setBackgroundColor(Color.WHITE);
|
| | | //setView(view);
|
| | |
|
| | |
|
| | | // setButton(BUTTON_POSITIVE, themeContext.getString(R.string.ok), this);
|
| | | // setButton(BUTTON_NEGATIVE, themeContext.getString(R.string.cancel), this);
|
| | | // setButtonPanelLayoutHint(LAYOUT_HINT_SIDE);
|
| | |
|
| | | ViewUtils.inject(this, view);
|
| | | mDatePicker = (DatePicker) view.findViewById(R.id.datePicker);
|
| | | mDatePicker.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this);
|
| | | // mDatePicker.setValidationCallback(mValidationCallback);
|
| | | //实现自己的标题和ok按钮
|
| | | //setTitle("选择日期:");
|
| | | setButton();
|
| | |
|
| | | show();
|
| | | setContentView(view);
|
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | mDatePicker.init(year, month, day, this);
|
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * The callback used to indicate the user is done filling in the date.
|
| | | */
|
| | | public interface OnDateSetListener {
|
| | |
|
| | | /**
|
| | | * @param view The view associated with this listener.
|
| | | * @param year The year that was set.
|
| | | * @param monthOfYear The month that was set (0-11) for compatibility
|
| | | * with {@link java.util.Calendar}.
|
| | | * @param dayOfMonth The day of the month that was set.
|
| | | */
|
| | | void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth);
|
| | | }
|
| | |
|
| | | private void setButton() {
|
| | | //获取自己定义的响应按钮并设置监听,直接调用构造时传进来的CallBack接口(为了省劲,没有自己写接口,直接用之前本类定义好的)同时关闭对话框。
|
| | | view.findViewById(R.id.date_picker_ok).setOnClickListener(
|
| | | new View.OnClickListener() {
|
| | | @Override
|
| | | public void onClick(View v) {
|
| | | if (mDateSetListener != null) {
|
| | | // Clearing focus forces the dialog to commit any pending
|
| | | // changes, e.g. typed text in a NumberPicker.
|
| | | mDatePicker.clearFocus();
|
| | | mDateSetListener.onDateSet(mDatePicker, mDatePicker.getYear(),
|
| | | mDatePicker.getMonth(), mDatePicker.getDayOfMonth());
|
| | | cancel();
|
| | | }
|
| | | }
|
| | | });
|
| | | view.findViewById(R.id.date_picker_cancle).setOnClickListener(
|
| | | new View.OnClickListener() {
|
| | | @Override
|
| | | public void onClick(View v) {
|
| | | cancel();
|
| | | }
|
| | | });
|
| | | @OnClick(R.id.date_picker_ok)
|
| | | public void date_picker_ok_click(View view) {
|
| | | if (mDateSetListener != null) {
|
| | | mDatePicker.clearFocus();
|
| | | mDateSetListener.onSelected(mDatePicker.getYear()+"-"+
|
| | | mDatePicker.getMonth()+"-"+mDatePicker.getDayOfMonth());
|
| | | cancel();
|
| | | }
|
| | | }
|
| | |
|
| | | public void myShow() {
|
| | | //自己实现show方法,主要是为了把setContentView方法放到show方法后面,否则会报错。
|
| | | show();
|
| | | setContentView(view);
|
| | | }
|
| | | @NonNull
|
| | | @Override
|
| | | public Bundle onSaveInstanceState() {
|
| | | return super.onSaveInstanceState();
|
| | | @OnClick(R.id.date_picker_cancel)
|
| | | public void date_picker_cancel_click(View view) {
|
| | | cancel();
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void onRestoreInstanceState(Bundle savedInstanceState) {
|
| | | super.onRestoreInstanceState(savedInstanceState);
|
| | | }
|