package com.duguang.baseanimation.ui.imitate.wheel;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.duguang.baseanimation.R;
import com.duguang.baseanimation.ui.base.BaseActivity;
public class WheelMainActivity extends BaseActivity {
/** Called when the activity is first created. */
private LinearLayout layout = null ;
private WheelView yearWV = null;
private WheelView monthWV = null;
private WheelView dayWV = null;
private WheelView hourWV = null;
private WheelView minuteWV = null;
private TextView time_TV = null;
private Button reset_Btn = null;
// 地区选择
private WheelView shengWV = null;
private WheelView shiWV = null;
private TextView placeTV = null;
int year;
int month;
String[][] places = { { "北京", "海淀", "昌平", "朝阳", "西城" },
{ "陕西", "咸阳", "西安", "宝鸡", "延安", "榆林" },
{ "山西", "太原", "大同", "临汾", "运城", "长治" },
{ "河南", "郑州", "开封", "信阳", "商丘", "洛阳" },
{ "辽宁", "大连", "鞍山", "铁岭", "丹东", "葫芦岛" } };
String[] shengs = { "北京", "山西", "陕西", "辽宁", "河南" };
String[] beijing = { "海淀", "昌平", "朝阳", "西城", "房山" };
//山西
String[] shanxi01 = { "太原", "大同", "临汾", "运城", "长治" };
//陕西
String[] shanxi02 = { "咸阳", "西安", "宝鸡", "延安", "榆林" };
String[] liaoning = { "大连", "鞍山", "铁岭", "丹东", "葫芦岛" };
String[] henan = { "郑州", "开封", "信阳", "商丘", "洛阳" };
// 滚轮上的数据,字符串数组
String[] yearArrayString = null;
String[] dayArrayString = null;
String[] monthArrayString = null;
String[] hourArrayString = null;
String[] minuteArrayString = null;
Calendar c = null;
@Override
public void setView() {
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// HideTitle();
// HideStatusBar();
setContentView(R.layout.activity_imitate_wheel_main);
layout = (LinearLayout)findViewById(R.id.llayout);
System.out.println("layout.getgetTop()-->" + layout.getTop());
System.out.println("layout.getBottom()-->" + layout.getBottom());
// 得到相应的数组
yearArrayString = getYEARArray(2010, 19);
monthArrayString = getDayArray(12);
hourArrayString = getHMArray(24);
minuteArrayString = getHMArray(60);
// 获取当前系统时间
c = Calendar.getInstance();
}
@Override
public void setListener() {
// TODO Auto-generated method stub
}
@Override
public void initView() {
time_TV = (TextView) findViewById(R.id.time_chose);
reset_Btn = (Button) findViewById(R.id.reset_btn);
yearWV = (WheelView) findViewById(R.id.time_year);
monthWV = (WheelView) findViewById(R.id.time_month);
dayWV = (WheelView) findViewById(R.id.time_day);
hourWV = (WheelView) findViewById(R.id.time_hour);
minuteWV = (WheelView) findViewById(R.id.time_minute);
// 设置每个滚轮的行数
yearWV.setVisibleItems(5);
monthWV.setVisibleItems(5);
dayWV.setVisibleItems(5);
hourWV.setVisibleItems(5);
minuteWV.setVisibleItems(5);
// 设置滚轮的标签
yearWV.setLabel("年");
monthWV.setLabel("月");
dayWV.setLabel("日");
hourWV.setLabel("时");
minuteWV.setLabel("分");
// 地区选择
shengWV = (WheelView) findViewById(R.id.place_sheng);
shiWV = (WheelView) findViewById(R.id.place_shi);
placeTV = (TextView) findViewById(R.id.place_chose);
shengWV.setVisibleItems(5);
shiWV.setVisibleItems(5);
yearWV.setCyclic(true);
monthWV.setCyclic(true);
dayWV.setCyclic(true);
hourWV.setCyclic(true);
minuteWV.setCyclic(true);
shengWV.setCyclic(true);
shiWV.setCyclic(true);
setData();
}
/**
* 给滚轮提供数据
*/
private void setData() {
// 给滚轮提供数据
yearWV.setAdapter(new ArrayWheelAdapter<String>(yearArrayString));
monthWV.setAdapter(new ArrayWheelAdapter<String>(monthArrayString));
hourWV.setAdapter(new ArrayWheelAdapter<String>(hourArrayString));
minuteWV.setAdapter(new ArrayWheelAdapter<String>(minuteArrayString));
yearWV.addChangingListener(new OnWheelChangedListener() {
@Override
public void onChanged(WheelView wheel, int oldValue, int newValue) {
// TODO Auto-generated method stub
// 获取年和月
year = Integer.parseInt(yearArrayString[yearWV.getCurrentItem()]);
month = Integer.parseInt(monthArrayString[monthWV
.getCurrentItem()]);
// 根据年和月生成天数数组
dayArrayString = getDayArray(getDay(year, month));
// 给天数的滚轮设置数据
dayWV.setAdapter(new ArrayWheelAdapter<String>(dayArrayString));
// 防止数组越界
if (dayWV.getCurrentItem() >= dayArrayString.length) {
dayWV.setCurrentItem(dayArrayString.length - 1);
}
// 显示的时间
showDate();
}
});
// 当月变化时显示的时间
monthWV.addChangingListener(new OnWheelChangedListener() {
@Override
public void onChanged(WheelView wheel, int oldValue, int newValue) {
// TODO Auto-generated method stub
// 获取年和月
year = Integer.parseInt(yearArrayString[yearWV.getCurrentItem()]);
month = Integer.parseInt(monthArrayString[monthWV
.getCurrentItem()]);
// 根据年和月生成天数数组
dayArrayString = getDayArray(getDay(year, month));
// 给天数的滚轮设置数据
dayWV.setAdapter(new ArrayWheelAdapter<String>(dayArrayString));
// 防止数组越界
if (dayWV.getCurrentItem() >= dayArrayString.length) {
dayWV.setCurrentItem(dayArrayString.length - 1);
}
// 显示的时间
showDate();
}
});
// 当天变化时,显示的时间
dayWV.addChangingListener(new OnWheelChangedListener() {
@Override
public void onChanged(WheelView wheel, int oldValue, int newValue) {
showDate();
}
});
// 当小时变化时,显示的时间
hourWV.addChangingListener(new OnWheelChangedListener() {
@Override
public void onChanged(WheelView wheel, int oldValue, int newValue) {
showDate();
}
});
// 当分钟变化时,显示的时间
minuteWV.addChangingListener(new OnWheelChangedListener() {
@Override
public void onChanged(WheelView wheel, int oldValue, int newValue) {
showDate();
}
});
// 把当前系统时间显示为滚轮默认时间
setOriTime();
// 点击回到系统时间
reset_Btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 把当前系统时间显示为滚轮默认时间
c = Calendar.getInstance();
setOriTime();
}
});
chosePlce();
}
// 设定初始时间
void setOriTime() {
yearWV.setCurrentItem(getNumData(c.get(Calendar.YEAR) + "",
yearArrayString));
monthWV.setCurrentItem(getNumData(c.get(Calendar.MONTH) + 1 + "",
monthArrayString) + 0);
hourWV.setCurrentItem(getNumData(c.get(Calendar.HOUR_OF_DAY) + "",
hourArrayString));
minuteWV.setCurrentItem(getNumData(c.get(Calendar.MINUTE) + "",
minuteArrayString));
dayArrayString = getDayArray(getDay(year, month));
dayWV.setAdapter(new ArrayWheelAdapter<String>(dayArrayString));
dayWV.setCurrentItem(getNumData(c.get(Calendar.DAY_OF_MONTH) + "",
dayArrayString));
// 初始化显示的时间
showDate();
}
// 显示时间
void showDate() {
createDate(yearArrayString[yearWV.getCurrentItem()],
monthArrayString[monthWV.getCurrentItem()],
dayArrayString[dayWV.getCurrentItem()],
hourArrayString[hourWV.getCurrentItem()],
minuteArrayString[minuteWV.getCurrentItem()]);
}
// 生成时间
void createDate(String year, String month, String day, String hour,
String minute) {
String dateStr = year + "年" + month + "月" + day + "日" + hour + "时"
+ minute + "分";
time_TV.setText("选择时间为:" + dateStr);
}
// 在数组Array[]中找出字符串s的位置
int getNumData(String s, String[] Array) {
int num = 0;
for (int i = 0; i < Array.length; i++) {
if (s.equals(Array[i])) {
num = i;
break;
}
}
return num;
}
// 根据当前年份和月份判断这个月的天数
public int getDay(int year, int month) {
int day;
if (year % 4 == 0 && year % 100 != 0) { // 闰年
if (month == 1 || month == 3 || month == 5 || month == 7
|| month == 8 || month == 10 || month == 12) {
day = 31;
} else if (month == 2) {
day = 29;
} else {
day = 30;
}
} else { // 平年
if (month == 1 || month == 3 || month == 5 || month == 7
|| month == 8 || month == 10 || month == 12) {
day = 31;
} else if (month == 2) {
day = 28;
} else {
day = 30;
}
}
return day;
}
// 根据数字生成一个字符串数组
public String[] getDayArray(int day) {
String[] dayArr = new String[day];
for (int i = 0; i < day; i++) {
dayArr[i] = i + 1 + "";
}
return dayArr;
}
// 根据数字生成一个字符串数组
public String[] getHMArray(int day) {
String[] dayArr = new String[day];
for (int i = 0; i < day; i++) {
dayArr[i] = i + "";
}
return dayArr;
}
// 根据初始值start和step得到一个字符数组,自start起至start+step-1
public String[] getYEARArray(int start, int step) {
String[] dayArr = new String[step];
for (int i = 0; i < step; i++) {
dayArr[i] = start + i + "";
}
return dayArr;
}
void chosePlce() {
// 给滚轮提供数据
shengWV.setAdapter(new ArrayWheelAdapter<String>(shengs));
shiWV.setAdapter(new ArrayWheelAdapter<String>(beijing));
shengWV.setLabel("市");
shiWV.setLabel("区");
placeTV.setText("您选的是:" + shengs[shengWV.getCurrentItem()]
+ shengWV.getLabel() + beijing[shiWV.getCurrentItem()]
+ shiWV.getLabel());
shengWV.addChangingListener(new OnWheelChangedListener() {
@Override
public void onChanged(WheelView wheel, int oldValue, int newValue) {
// TODO Auto-generated method stub
String sheng = shengs[newValue];
String shi = "";
if (sheng.equals("北京")) {
shengWV.setLabel("市");
shiWV.setLabel("区");
shiWV.setAdapter(new ArrayWheelAdapter<String>(beijing));
shi = beijing[shiWV.getCurrentItem()];
} else if (sheng.equals("山西")) {
shengWV.setLabel("省");
shiWV.setLabel("市");
shiWV.setAdapter(new ArrayWheelAdapter<String>(shanxi01));
shi = shanxi01[shiWV.getCurrentItem()];
} else if (sheng.equals("陕西")) {
shengWV.setLabel("省");
shiWV.setLabel("市");
shiWV.setAdapter(new ArrayWheelAdapter<String>(shanxi02));
shi = shanxi02[shiWV.getCurrentItem()];
} else if (sheng.equals("河南")) {
shengWV.setLabel("省");
shiWV.setLabel("市");
shiWV.setAdapter(new ArrayWheelAdapter<String>(henan));
shi = henan[shiWV.getCurrentItem()];
} else if (sheng.equals("辽宁")) {
shengWV.setLabel("省");
shiWV.setLabel("市");
shiWV.setAdapter(new ArrayWheelAdapter<String>(liaoning));
shi = liaoning[shiWV.getCurrentItem()];
}
placeTV.setText("您选的是:" + shengs[shengWV.getCurrentItem()]
+ shengWV.getLabel() + shi + shiWV.getLabel());
}
});
shiWV.addChangingListener(new OnWheelChangedListener() {
@Override
public void onChanged(WheelView wheel, int oldValue, int newValue) {
// TODO Auto-generated method stub
String sheng = shengs[shengWV.getCurrentItem()];
String shi = "";
if (sheng.equals("北京")) {
shi = beijing[shiWV.getCurrentItem()];
} else if (sheng.equals("山西")) {
shi = shanxi01[shiWV.getCurrentItem()];
} else if (sheng.equals("陕西")) {
shi = shanxi02[shiWV.getCurrentItem()];
} else if (sheng.equals("河南")) {
shi = henan[shiWV.getCurrentItem()];
} else if (sheng.equals("辽宁")) {
shi = liaoning[shiWV.getCurrentItem()];
}
placeTV.setText("您选的是:" + sheng + shengWV.getLabel() + shi
+ shiWV.getLabel());
}
});
}
/**
* 标题栏隐藏
* 在Activity.setCurrentView()之前调用此方法
*/
private void HideTitle() {
// TODO TODO TODO TODO Auto-generated method stub
requestWindowFeature(Window. FEATURE_NO_TITLE );
}
/**
* 隐藏状态栏(全屏)
* 在Activity.setCurrentView()之前调用此方法
*/
private void HideStatusBar() {
// TODO TODO TODO TODO Auto-generated method stub
// 隐藏标题
requestWindowFeature(Window. FEATURE_NO_TITLE );
// 定义全屏参数
int flag=WindowManager.LayoutParams. FLAG_FULLSCREEN ;
// 获得窗口对象
Window myWindow= this.getWindow();
// 设置 Flag 标识
myWindow.setFlags(flag,flag);
}
}