/**
* copyright habei
* ��������ʱ��ѡ����
*/
package coolbuy360.dateview;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import coolbuy360.searchhealth.R;
public class DateDialog extends Dialog {
private static int START_YEAR = 1900, END_YEAR = 2100;
WheelView wv_year;
WheelView wv_month;
WheelView wv_day;
WheelView wv_hours;
WheelView wv_mins;
// �Ƿ���ʾ Ĭ�ϲ���ʾ
Boolean YEAR = true;
// �Ƿ���ʾ�� Ĭ�ϲ���ʾ
Boolean MONTH = true;
// �Ƿ���ʾ�� Ĭ�ϲ���ʾ
Boolean DAY = true;
// �Ƿ���ʾʱ Ĭ�ϲ���ʾ
Boolean HOUR = false;
// �Ƿ���ʾ�� Ĭ�ϲ���ʾ
Boolean MINUTES = false;
// Ĭ�ϳ�ʼ������ѡ����
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
Boolean isCustomerDate = false;
String parten = "00";
final DecimalFormat decimal = new DecimalFormat(parten);
private LayoutInflater inflater;// �������õ�item��Ҫ�õ������
/**
* �������ڿؼ����� Ĭ����ʾ �� �� �� ��ݷ�Χ1900��-2100��
*/
public DateDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public DateDialog(Context context, int theme) {
super(context, theme);
// TODO Auto-generated constructor stub
}
/*
* @see android.app.Dialog#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.datepicker);
InitDate();
// setContentView(dateview);
}
/**
* ��ʼ������
*/
private void InitDate() {
// ��Ӵ�С���·ݲ�����ת��Ϊlist,����֮����ж�
String[] months_big = { "1", "3", "5", "7", "8", "10", "12" };
String[] months_little = { "4", "6", "9", "11" };
final List<String> list_big = Arrays.asList(months_big);
final List<String> list_little = Arrays.asList(months_little);
// �ҵ�dialog�IJ����ļ�
// View dateview = inflater.inflate(R.layout.datepicker, null);
// ��
if (YEAR) {
wv_year = (WheelView) this.findViewById(R.id.year);
wv_year.setAdapter(new NumericWheelAdapter(START_YEAR, END_YEAR));// ����"��"����ʾ����
wv_year.setCyclic(true);// ��ѭ������
wv_year.setLabel("��");// �������
wv_year.setCurrentItem(year - START_YEAR);// ��ʼ��ʱ��ʾ������
wv_year.setVisibility(View.VISIBLE);
}
// ��
if (MONTH) {
wv_month = (WheelView) this.findViewById(R.id.month);
wv_month.setAdapter(new NumericWheelAdapter(1, 12));
wv_month.setCyclic(true);
wv_month.setLabel("��");
wv_month.setCurrentItem(month);
wv_month.setVisibility(View.VISIBLE);
}
// ��
if (DAY) {
wv_day = (WheelView) this.findViewById(R.id.day);
wv_day.setCyclic(true);
// �жϴ�С�¼��Ƿ�����,����ȷ��"��"������
if (list_big.contains(String.valueOf(month + 1))) {
wv_day.setAdapter(new NumericWheelAdapter(1, 31));
} else if (list_little.contains(String.valueOf(month + 1))) {
wv_day.setAdapter(new NumericWheelAdapter(1, 30));
} else {
// ����
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
wv_day.setAdapter(new NumericWheelAdapter(1, 29));
else
wv_day.setAdapter(new NumericWheelAdapter(1, 28));
}
wv_day.setLabel("��");
wv_day.setCurrentItem(day - 1);
wv_day.setVisibility(View.VISIBLE);
}
// ʱ
if (HOUR) {
wv_hours = (WheelView) this.findViewById(R.id.hour);
wv_hours.setAdapter(new NumericWheelAdapter(0, 23));
wv_hours.setCyclic(true);
wv_hours.setCurrentItem(hour);
wv_hours.setLabel("ʱ");
wv_hours.setVisibility(View.VISIBLE);
}
// ��
if (MINUTES) {
wv_mins = (WheelView) this.findViewById(R.id.mins);
wv_mins.setAdapter(new NumericWheelAdapter(0, 59, "%02d"));
wv_mins.setCyclic(true);
wv_mins.setCurrentItem(minute);
wv_mins.setLabel("��");
wv_mins.setVisibility(View.VISIBLE);
}
// ���"��"����
OnWheelChangedListener wheelListener_year = new OnWheelChangedListener() {
public void onChanged(WheelView wheel, int oldValue, int newValue) {
int year_num = newValue + START_YEAR;
// �жϴ�С�¼��Ƿ�����,����ȷ��"��"������
if (list_big
.contains(String.valueOf(wv_month.getCurrentItem() + 1))) {
wv_day.setAdapter(new NumericWheelAdapter(1, 31));
} else if (list_little.contains(String.valueOf(wv_month
.getCurrentItem() + 1))) {
wv_day.setAdapter(new NumericWheelAdapter(1, 30));
} else {
if ((year_num % 4 == 0 && year_num % 100 != 0)
|| year_num % 400 == 0)
wv_day.setAdapter(new NumericWheelAdapter(1, 29));
else
wv_day.setAdapter(new NumericWheelAdapter(1, 28));
}
}
};
// ���"��"����
OnWheelChangedListener wheelListener_month = new OnWheelChangedListener() {
public void onChanged(WheelView wheel, int oldValue, int newValue) {
int month_num = newValue + 1;
// �жϴ�С�¼��Ƿ�����,����ȷ��"��"������
if (list_big.contains(String.valueOf(month_num))) {
wv_day.setAdapter(new NumericWheelAdapter(1, 31));
} else if (list_little.contains(String.valueOf(month_num))) {
wv_day.setAdapter(new NumericWheelAdapter(1, 30));
} else {
if (((wv_year.getCurrentItem() + START_YEAR) % 4 == 0 && (wv_year
.getCurrentItem() + START_YEAR) % 100 != 0)
|| (wv_year.getCurrentItem() + START_YEAR) % 400 == 0)
wv_day.setAdapter(new NumericWheelAdapter(1, 29));
else
wv_day.setAdapter(new NumericWheelAdapter(1, 28));
}
}
};
wv_year.addChangingListener(wheelListener_year);
wv_month.addChangingListener(wheelListener_month);
// ������Ļ�ܶ���ָ��ѡ��������Ĵ�С
int textSize = 0;
textSize = 20;
wv_day.TEXT_SIZE = textSize;
// wv_hours.TEXT_SIZE = textSize;
// wv_mins.TEXT_SIZE = textSize;
wv_month.TEXT_SIZE = textSize;
wv_year.TEXT_SIZE = textSize;
Button btn_cancel = (Button) this
.findViewById(R.id.btn_datetime_cancel);
btn_cancel.setOnClickListener(new cancelonclick());
}
/**
* �����Ƿ���ʾ�Զ�������(�����Զ�������)
*
* @param iscustomerDate
* �Ƿ��Զ�����ʾ����
*/
public void setCustomerDate(Boolean iscustomerDate) {
isCustomerDate = iscustomerDate;
}
/**
* ʱ��ؼ�����Ĭ��ֵ
* @param dt
* �����ַ���
* @param dateformat
* ת���ĸ�ʽ
* @return
*
* */
public void setCustomerDate(String dtstr,String dateformat)
{
isCustomerDate = true;
Date dt= getDateFromStr(dtstr, dateformat);
//datedialogtest.setYear(true, 1911);
this.setYear(true,dt.getYear()+START_YEAR);
Log.i("chenlinwei","�Զ������1��"+dt.getYear()+"" );
this.setMonth(true,dt.getMonth());
this.setDay(true,dt.getDate());
if(HOUR)
{
this.setHour(true, dt.getHours());
}
if(MINUTES)
{
this.setMinute(true, dt.getMinutes());
}
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ��Ĺ���
* @param cusYear
* �Զ���Ĭ����ʾ����� ��ݷ�Χ1900-2100
*/
public void setYear(Boolean isSetYear, int cusYear) {
YEAR = isSetYear;
if (isCustomerDate) {
Log.i("chenlinwei","�Զ������2��"+cusYear+"" );
if (cusYear > START_YEAR && cusYear < END_YEAR)// ���С�ڻ��������������ʾĬ������
{
Log.i("chenlinwei","�Զ������2��"+cusYear+"" );
year = cusYear;
}
}
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ��Ĺ���
*/
public void setYear(Boolean isSetYear) {
YEAR = isSetYear;
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ�µ�ѡ����
* @param cusYear
* �Զ���Ĭ����ʾ���·�
*/
public void setMonth(Boolean isSetMonth, int cusMonth) {
MONTH = isSetMonth;
if (isCustomerDate) {
month = cusMonth;
}
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ�µ�ѡ����
*/
public void setMonth(Boolean isSetMonth) {
MONTH = isSetMonth;
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ�յ�ѡ����
* @param cusYear
* �Զ���Ĭ����ʾ����
*/
public void setDay(Boolean isSetDay, int cusDay) {
DAY = isSetDay;
if (isCustomerDate) {
day = cusDay;
}
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ�յ�ѡ����
*/
public void setDay(Boolean isSetDay) {
DAY = isSetDay;
}
/**
* ���� ʱ�����ʾ��
*
* @param isSetYear
* �Ƿ���ʾʱ��ѡ����
* @param cusYear
* �Զ���Ĭ����ʾ��ʱ
*/
public void setHour(Boolean isSetHour, int cusHour) {
HOUR = isSetHour;
if (isCustomerDate) {
hour = cusHour;
}
}
/**
* ���� ʱ�����ʾ��
*
* @param isSetYear
* �Ƿ���ʾʱ��ѡ����
*/
public void setHour(Boolean isSetHour) {
HOUR = isSetHour;
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ�ֵ�ѡ����
* @param cusYear
* �Զ���Ĭ����ʾ�ķ�
*/
public void setMinute(Boolean isSetMinute, int cusMin) {
MINUTES = isSetMinute;
if (isCustomerDate) {
minute = cusMin;
}
}
/**
* ���� �������ʾ��
*
* @param isSetYear
* �Ƿ���ʾ�ֵ�ѡ����
*/
public void setMinute(Boolean isSetMinute) {
MINUTES = isSetMinute;
}
/*
* (non-Javadoc)
*
* @see android.app.Dialog#setContentView(android.view.View)
*/
/*
* @Override public void setContentView(View view) { // TODO Auto-generated
* method stub Calendar calendar = Calendar.getInstance(); int year =
* calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH);
* int day = calendar.get(Calendar.DATE); int hour =
* calendar.get(Calendar.HOUR_OF_DAY); int minute =
* calendar.get(Calendar.MINUTE);
*
* // ��Ӵ�С���·ݲ�����ת��Ϊlist,����֮����ж� String[] months_big = { "1", "3", "5", "7",
* "8", "10", "12" }; String[] months_little = { "4", "6", "9", "11" };
*
* final List<String> list_big = Arrays.asList(months_big); final
* List<String> list_little = Arrays.asList(months_little); // �ҵ�dialog�IJ����ļ�
* View dateview = inflater.inflate(R.layout.datepicker, null);
*
* // �� wv_year = (WheelView) dateview.findViewById(R.id.year);
* wv_year.setAdapter(new NumericWheelAdapter(START_YEAR, END_YEAR));//
* ����"��"����ʾ���� wv_year.setCyclic(true);// ��ѭ������ wv_year.setLabel("��");// �������
* wv_year.setCurrentItem(year - START_YEAR);// ��ʼ��ʱ��ʾ������
* //wv_year.setVisibility(view.GONE); // �� wv_month = (WheelView)
* dateview.findViewById(R.id.month); wv_month.setAdapter(new
* NumericWheelAdapter(1, 12)); wv_month.setCyclic(true);
* wv_month.setLabel("��"); wv_month.setCurrentItem(month);
*
*
* // �� wv_day = (WheelView) dateview.findViewById(R.id.day);
* wv_day.setCyclic(true); // �жϴ�С�¼��Ƿ�����,����ȷ��"��"������ if
* (list_big.contains(String.valueOf(month + 1))) { wv_day.setAdapter(new
* NumericWheelAdapter(1, 31)); } else if
* (list_little.contains(String.valueOf(month + 1))) { wv_day.setAdapter(new
* NumericWheelAdapter(1, 30)); } else { // ���� if ((year % 4 == 0 && year %
* 100 != 0) || year % 400 == 0) wv_day.setAdapter(new
* NumericWheelAdapter(1, 29)); else wv_day.setAdapter(new
* NumericWheelAdapter(1, 28)); } wv_day.setLabel("��");
* wv_day.setCurrentItem(day - 1);
*
* // ʱ
*
* final WheelView wv_hours = (WheelView) view.findViewById(R.id.hour);
* wv_hours.setAdapter(new NumericWheelAdapter(0, 23));
* wv_hours.setCyclic(true); wv_hours.setCurrentItem(hour);
*
* // �� final WheelView wv_mins = (WheelView) view.findViewById(R.id.mins);
* wv_mins.setAdapter(new NumericWheelAdapter(0, 59, "%02d"));
* wv_mins.setCyclic(true); wv_mins.setCurrentItem(minute);
*
*
* // ���"��"���� OnWheelChangedListener wheelListener_year = new
* OnWheelChangedListener() { public void onChanged(WheelView wheel, int
* oldValue, int newValue) { int year_num = newValue + START_YEAR; //
* �жϴ�С�¼��Ƿ�����,����ȷ��"��"������ if (list_big
* .contains(String.valueOf(wv_month.getCurrentItem() + 1))) {
* wv_day.setAdapter(new NumericWheelAdapter(1, 31)); } else if
* (list_little.contains(String.valueOf(wv_month .getCurrentItem() + 1))) {
* wv_day.setAdapter(new NumericWheelAdapter(1, 30)); } else { if ((year_num
* % 4 == 0 && year_num % 100 != 0) || year_num % 400 == 0)
* wv_day.setAdapter(new NumericWheelAdapter(1, 29)); else
* wv_day.setAdapter(new NumericWheelAdapter(1, 28)); } } }; // ���"��"����
* OnWheelChangedListener wheelListener_month = new OnWheelChangedListener()
* { public void onChanged(WheelView wheel, int oldValue, int newValue) {
* int month_num = newValue + 1; // �жϴ�С�¼��Ƿ�����,����ȷ��"��"������ if
* (list_big.contains(String.valueOf(month_num))) { wv_day.setAdapter(new
* NumericWheelAdapter(1, 31)); } else if
* (list_little.contains(String.valueOf(month_num))) { wv_day.setAdapter(new
* NumericWheelAdapter(1, 30)); } else { if (((wv_year.getCurrentItem() +
* START_YEAR) % 4 == 0 && (wv_year .getCurrentItem() + START_YEAR) % 100 !=
* 0) || (wv_year.getCurrentItem() + START_YEAR) % 400 == 0)
* wv_day.setAdapter(new NumericWheelAdapter(1, 29)); else
* wv_day.setAdapter(new NumericWheelAdapter(1, 28)); } } };
* wv_year.addChangingListener(wheelListener_year);
* wv_month.addChangingListener(wheelListener_month);
*
* // ������Ļ�ܶ���ָ��ѡ��������Ĵ�С int textSize = 0;
*
* textSize = 12;
*
* wv_day.TEXT_SIZE = textSize; // wv_hours.TEXT_SIZE = textSize; //
* wv_mins.TEXT_SIZE = textSize; wv_month.TEXT_SIZE = textSize;
* wv_year.TEXT_SIZE = textSize;
*
* Button btn_cancel = (Button) dateview
* .findViewById(R.id.btn_datetime_cancel);
* btn_cancel.setOnClickListener(new cancelonclick());
* super.setContentView(dateview);
*
* }
*/
/**
* ���ַ���ת����Date����
* @param dt
* �����ַ���
* @param dateformat
* ת���ĸ�ʽ
* @return
* ����Date����
*/
private Date getDateFromStr(String dt, String dateformat)
{
SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
Date strtodate;
try {
strtodate = formatter.parse(dt);
} catch (ParseException e) {
// TODO Auto-generated catch block
return null;
}
return strtodate;
}
/**
* ȡ����ť����ز���
*/
private final class cancelonclick implements
android.view.View.OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DateDialog.this.dismiss();
}
}
/**
* ȷ����ť����ز���
*
* @param str
* ��ť��ʾ������
* @param listener
* ��ť�ļ����¼�
*/
public void setOkListener(final String str,
final View.OnClickListener listener) {
Button btn_sure = (Button) this.findViewById(R.id.btn_datetime_sure);
btn_sure.setText(str);
btn_sure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String time = wv_year.getCurrentItem() + START_YEAR + "-"
+ decimal.format((wv_month.getCurrentItem() + 1)) + "-"
+ decimal.format((wv_day.getCurrentItem() + 1)) + " ";
v.setTag(time);
listener.onClick(v);
dismiss();
}
});
}
/**
* ��ô����ڸ�ʽ������
* @return
*/
public String getDateTime(String formatStr)
{
Date dt=getDate();
//SimpleDateFormat dateformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E ");
SimpleDateFormat dateformat=new SimpleDateFormat(formatStr);
dt.getDay();
String dateforWeek=dateformat.format(dt);
return dateforWeek;
}
public int getWeenk()
{
return getDate().getDay();
}
/**
* ��ȡʱ��
* @return
*/
public Date getDate()
{
String datetimeStr= getYear()+"-"+getMonth()+"-"+getDay();
String formatStr="yyyy-MM-dd";
if(HOUR)
{
datetimeStr=" "+datetimeStr+getHour()+":";
formatStr="yyyy-MM-dd hh";
if(MINUTES)
{
datetimeStr=datetimeStr+getMin()+":"+"00";
formatStr="yyyy-MM-dd hh:MM";
}
}
DateFormat f = new SimpleDateFormat(formatStr);
Date dt = null;
try {
Log.i("chenlinwei", "format"+formatStr);
Log.i("chenlinwei","content" +datetimeStr);
dt = f.parse(datetimeStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
}
Log.i("chenlinwei", dt.toString());
return dt;
}
/**
* �����
*
* @return
*/
public String getYear() {
return YEAR? wv_year.getCurrentItem() + START_YEAR + "":"";
}
/**
* �����
*
* @return
*/
public String getMonth() {
return MONTH? decimal.format((wv_month.getCurrentItem() + 1)):"";
}
/**
* ���Сʱ
*
* @return
*/
public String getHour() {
return HOUR?decimal.format(wv_hours.getCurrentItem()):"";
}
/**
* �����
*
* @return
*/
public String getDay() {
return DAY?decimal.format((wv_day.getCurrentItem() + 1)):"";
}
/**
* ��÷���
*
* @return
*/
public String getMin() {
return MINUTES?decimal.format(wv_mins.getCurrentItem()):"";
}
/*
* ����
*
* @see android.app.Dialog#setTitle(java.lang.CharSequence)
*/
@Override
public void setTitle(CharSequence title) {
// TODO Auto-generated method stub
super.setTitle(title);
}
/*
* ����
*
* @see android.app.Dialog#setTitle(int)
*/
@Override
public void setTitle(int titleId) {
// TODO Auto-generated method stub
super.setTitle(titleId);
}
}