时间日期滚动选择控件(修改版)

来源:互联网 发布:p2p按天返利的理财源码 编辑:程序博客网 时间:2024/05/30 19:33

之前有发过一个选择控件的demo,有点小Bug,现在已经修复,喜欢的朋友可以去下载:http://download.csdn.net/detail/aiyuan0204/7062347

package com.ycf.blog_05_chinesechoosedemo.datedialog;import java.util.Calendar;import com.ycf.blog_05_chinesechoosedemo.R;import android.content.Context;import android.text.format.DateFormat;import android.widget.FrameLayout;import android.widget.NumberPicker;import android.widget.NumberPicker.OnValueChangeListener;public class DateTimePicker extends FrameLayout{private final NumberPicker mDateSpinner;private final NumberPicker mHourSpinner;private final NumberPicker mMinuteSpinner;private Calendar mDate;    private int mHour,mMinute;     private String[] mDateDisplayValues = new String[7];    private OnDateTimeChangedListener mOnDateTimeChangedListener;        public DateTimePicker(Context context){    super(context);     mDate = Calendar.getInstance();              mHour=mDate.get(Calendar.HOUR_OF_DAY);         mMinute=mDate.get(Calendar.MINUTE);          inflate(context, R.layout.datedialog, this);          mDateSpinner=(NumberPicker)this.findViewById(R.id.np_date);     mDateSpinner.setMinValue(0);         mDateSpinner.setMaxValue(6);         updateDateControl();     mDateSpinner.setOnValueChangedListener(mOnDateChangedListener);          mHourSpinner=(NumberPicker)this.findViewById(R.id.np_hour);     mHourSpinner.setMaxValue(23);     mHourSpinner.setMinValue(0);     mHourSpinner.setValue(mHour);     mHourSpinner.setOnValueChangedListener(mOnHourChangedListener);          mMinuteSpinner=(NumberPicker)this.findViewById(R.id.np_minute);     mMinuteSpinner.setMaxValue(59);     mMinuteSpinner.setMinValue(0);     mMinuteSpinner.setValue(mMinute);     mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener);}        private NumberPicker.OnValueChangeListener mOnDateChangedListener=new OnValueChangeListener(){@Overridepublic void onValueChange(NumberPicker picker, int oldVal, int newVal){mDate.add(Calendar.DAY_OF_MONTH, newVal - oldVal);updateDateControl();onDateTimeChanged();}};        private NumberPicker.OnValueChangeListener mOnHourChangedListener=new OnValueChangeListener(){@Overridepublic void onValueChange(NumberPicker picker, int oldVal, int newVal){mHour=mHourSpinner.getValue();onDateTimeChanged();}};  private NumberPicker.OnValueChangeListener mOnMinuteChangedListener=new OnValueChangeListener(){@Overridepublic void onValueChange(NumberPicker picker, int oldVal, int newVal){mMinute=mMinuteSpinner.getValue();onDateTimeChanged();}};private void updateDateControl()     { Calendar cal = Calendar.getInstance();        cal.setTimeInMillis(mDate.getTimeInMillis());        cal.add(Calendar.DAY_OF_YEAR, -7 / 2 - 1);        mDateSpinner.setDisplayedValues(null);        for (int i = 0; i < 7; ++i)         {            cal.add(Calendar.DAY_OF_YEAR, 1);            mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE", cal);        }        mDateSpinner.setDisplayedValues(mDateDisplayValues);        mDateSpinner.setValue(7 / 2);        mDateSpinner.invalidate();    }  public interface OnDateTimeChangedListener   {        void onDateTimeChanged(DateTimePicker view, int year, int month, int day,int hour,int minute);  }  public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback)   {        mOnDateTimeChangedListener = callback;   }    private void onDateTimeChanged()   {        if (mOnDateTimeChangedListener != null)        {            mOnDateTimeChangedListener.onDateTimeChanged(this, mDate.get(Calendar.YEAR),            mDate.get(Calendar.MONTH), mDate.get(Calendar.DAY_OF_MONTH),mHour, mMinute);        }    }}

package com.ycf.blog_05_chinesechoosedemo.datedialog;import java.util.Calendar;import com.ycf.blog_05_chinesechoosedemo.datedialog.DateTimePicker.OnDateTimeChangedListener;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.text.format.DateUtils;public class DateTimePickerDialog extends AlertDialog implements OnClickListener{    private DateTimePicker mDateTimePicker;    private Calendar mDate = Calendar.getInstance();    private OnDateTimeSetListener mOnDateTimeSetListener;    @SuppressWarnings("deprecation")public DateTimePickerDialog(Context context, long date) {super(context);mDateTimePicker = new DateTimePicker(context);    setView(mDateTimePicker);    mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener(){@Overridepublic void onDateTimeChanged(DateTimePicker view, int year, int month, int day, int hour, int minute){mDate.set(Calendar.YEAR, year);                mDate.set(Calendar.MONTH, month);                mDate.set(Calendar.DAY_OF_MONTH, day);                mDate.set(Calendar.HOUR_OF_DAY, hour);                mDate.set(Calendar.MINUTE, minute);                mDate.set(Calendar.SECOND, 0);                updateTitle(mDate.getTimeInMillis());}});        setButton("设置", this);        setButton2("取消", (OnClickListener)null);    mDate.setTimeInMillis(date);    updateTitle(mDate.getTimeInMillis()); }public interface OnDateTimeSetListener     {        void OnDateTimeSet(AlertDialog dialog, long date);    }private void updateTitle(long date)     {        int flag = DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_WEEKDAY| DateUtils.FORMAT_SHOW_TIME;        setTitle(DateUtils.formatDateTime(this.getContext(), date, flag));    }public void setOnDateTimeSetListener(OnDateTimeSetListener callBack)    {        mOnDateTimeSetListener = callBack;    } public void onClick(DialogInterface arg0, int arg1)    {        if (mOnDateTimeSetListener != null)         {            mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis());        }    }}


0 0
原创粉丝点击