package com.geo.smallcredit.view.wheelview;
import java.util.Arrays;
import java.util.List;
import android.view.View;
import com.geo.smallcredit.R;
public class WheelMain {
private View view;
private WheelView wv_year;
private WheelView wv_month;
private WheelView wv_day;
private WheelView wv_hours;
private WheelView wv_mins;
public int screenheight;
private boolean hasSelectTime;
private static int START_YEAR = 1990, END_YEAR = 2100;
public View getView() {
return view;
}
public void setView(View view) {
this.view = view;
}
public static int getSTART_YEAR() {
return START_YEAR;
}
public static void setSTART_YEAR(int sTART_YEAR) {
START_YEAR = sTART_YEAR;
}
public static int getEND_YEAR() {
return END_YEAR;
}
public static void setEND_YEAR(int eND_YEAR) {
END_YEAR = eND_YEAR;
}
public WheelMain(View view) {
super();
this.view = view;
hasSelectTime = false;
setView(view);
}
public WheelMain(View view, boolean hasSelectTime) {
super();
this.view = view;
this.hasSelectTime = hasSelectTime;
setView(view);
}
public void initDateTimePicker(int year, int month, int day) {
this.initDateTimePicker(year, month, day, 0, 0);
}
/**
* @Description: TODO 弹出日期时间选择器
*/
public void initDateTimePicker(int year, int month, int day, int h, int m) {
// int year = calendar.get(Calendar.YEAR);
// int month = calendar.get(Calendar.MONTH);
// int day = calendar.get(Calendar.DATE);
// 添加大小月月份并将其转换为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);
// 年
wv_year = (WheelView) view.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_month = (WheelView) view.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) view.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_hours = (WheelView) view.findViewById(R.id.hour);
wv_mins = (WheelView) view.findViewById(R.id.min);
if (hasSelectTime) {
wv_hours.setVisibility(View.VISIBLE);
wv_mins.setVisibility(View.VISIBLE);
wv_hours.setAdapter(new NumericWheelAdapter(0, 23));
wv_hours.setCyclic(true);// 可循环滚动
wv_hours.setLabel("时");// 添加文字
wv_hours.setCurrentItem(h);
wv_mins.setAdapter(new NumericWheelAdapter(0, 59));
wv_mins.setCyclic(true);// 可循环滚动
wv_mins.setLabel("分");// 添加文字
wv_mins.setCurrentItem(m);
} else {
wv_hours.setVisibility(View.GONE);
wv_mins.setVisibility(View.GONE);
}
// 添加"年"监听
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;
if (hasSelectTime)
textSize = (screenheight / 100) * 3;
else
textSize = (screenheight / 100) * 4;
wv_day.TEXT_SIZE = textSize;
wv_month.TEXT_SIZE = textSize;
wv_year.TEXT_SIZE = textSize;
wv_hours.TEXT_SIZE = textSize;
wv_mins.TEXT_SIZE = textSize;
}
public String getTime() {
StringBuffer sb = new StringBuffer();
if (!hasSelectTime)
sb.append((wv_year.getCurrentItem() + START_YEAR)).append("-")
.append((wv_month.getCurrentItem() + 1)).append("-")
.append((wv_day.getCurrentItem() + 1));
else
sb.append((wv_year.getCurrentItem() + START_YEAR)).append("-")
.append((wv_month.getCurrentItem() + 1)).append("-")
.append((wv_day.getCurrentItem() + 1)).append(" ")
.append(wv_hours.getCurrentItem()).append(":")
.append(wv_mins.getCurrentItem());
return sb.toString();
}
}