package com.keju.maomao.activity.personalnfo; import java.io.File; import java.util.Calendar; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.keju.maomao.Constants; import com.keju.maomao.R; import com.keju.maomao.SystemException; import com.keju.maomao.activity.base.BaseActivity; import com.keju.maomao.helper.BusinessHelper; import com.keju.maomao.util.NetUtil; import com.keju.maomao.util.SharedPrefUtil; import com.keju.maomao.view.wheel.adapters.DayTimeNumericWheelAdapter; import com.keju.maomao.view.wheel.adapters.DayTimeNumericWheelAdapter.DayMidTextInterface; import com.keju.maomao.view.wheel.adapters.MonthTimeNumericWheelAdapter; import com.keju.maomao.view.wheel.adapters.MonthTimeNumericWheelAdapter.MonthMidTextInterface; import com.keju.maomao.view.wheel.adapters.YearTimeNumericWheelAdapter; import com.keju.maomao.view.wheel.adapters.YearTimeNumericWheelAdapter.YearMidTextInterface; import com.keju.maomao.view.wheel.widget.OnWheelScrollListener; import com.keju.maomao.view.wheel.widget.TimeWheelView; import com.keju.maomao.view.wheel.widget.WheelView; /** * 生日设置界面 * * @author ZhouYongJian * @data 创建时间:2013-10-27 18:00 */ public class BirthdaySetActivity extends BaseActivity implements OnClickListener { private LinearLayout timeWheels; private ImageButton ibLeft; private TextView tvTitle; private Button btnRight; private int yearSelected, monthSelected, daySelected;// 点保存时选择的年,月,日。 private int[] dateSelected = new int[3];// 选择的日期 xxxx-xx-xx。 DateModel model = new DateModel();// 实例化日期类。 Calendar calendar; TimeWheelView year, month, day;// 年滚轮,月滚轮,日滚轮。 YearTimeNumericWheelAdapter yearAdapter; MonthTimeNumericWheelAdapter monthAdapter; DayTimeNumericWheelAdapter dayAdapter;// 年月日滚轮适配器。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.birthday_set); ibLeft = (ImageButton) this.findViewById(R.id.ibLeft); btnRight = (Button) this.findViewById(R.id.btnRight); tvTitle = (TextView) this.findViewById(R.id.tvTitle); ibLeft.setImageResource(R.drawable.ic_btn_left); btnRight.setText("保存"); btnRight.setBackgroundResource(R.drawable.bg_btn_collection); tvTitle.setText("生日设置"); btnRight.setOnClickListener(this); ibLeft.setOnClickListener(this); timeWheels = (LinearLayout) this.findViewById(R.id.wheelgroup); calendar = Calendar.getInstance(); model.year = calendar.get(Calendar.YEAR); model.month = calendar.get(Calendar.MONTH); model.day = calendar.get(Calendar.DAY_OF_MONTH);// 获取当前日期。 // 实现年滚轮 year = (TimeWheelView) this.findViewById(R.id.yearwheel); yearAdapter = new YearTimeNumericWheelAdapter(this, model.year - 120, model.year + 120); yearAdapter.setItemResource(R.layout.wheel_nemeric_text_item); yearAdapter.setItemTextResource(R.id.numeric_text); yearAdapter.setSuffix(" 年"); yearAdapter.setYearTextInterface(yearMidTextInterface); year.setViewAdapter(yearAdapter); year.setVisibleItems(Constants.TIME_LIST_NUMBER); year.setCurrentItem(120); System.out.println(year.getLinearLayout());/* * getChildAt(0). * setBackgroundColor * (0xFFFFFFFF); */ year.addScrollingListener(new OnWheelScrollListener() { @Override public void onScrollingStarted(WheelView wheel) { } @Override public void onScrollingFinished(WheelView wheel) { model.year = calendar.get(Calendar.YEAR) + wheel.getCurrentItem() - 120; year.invalidateWheel(true); freshDayWheel(); } }); // 实现月滚轮。 month = (TimeWheelView) this.findViewById(R.id.monthwheel); monthAdapter = new MonthTimeNumericWheelAdapter(this, 1, 12); monthAdapter.setItemResource(R.layout.wheel_nemeric_text_item); monthAdapter.setItemTextResource(R.id.numeric_text); monthAdapter.setSuffix(" 月"); monthAdapter.setMonthTextInterface(monthMidTextInterface); month.setVisibleItems(Constants.TIME_LIST_NUMBER); month.setViewAdapter(monthAdapter); month.setCurrentItem(model.month); month.setCyclic(true); month.addScrollingListener(new OnWheelScrollListener() { @Override public void onScrollingStarted(WheelView wheel) { } @Override public void onScrollingFinished(WheelView wheel) { model.month = wheel.getCurrentItem() + 1; month.invalidateWheel(true); freshDayWheel(); } }); // 实现日滚轮。 day = (TimeWheelView) this.findViewById(R.id.daywheel); dayAdapter = new DayTimeNumericWheelAdapter(this, 1, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); dayAdapter.setItemResource(R.layout.wheel_nemeric_text_item); dayAdapter.setItemTextResource(R.id.numeric_text); dayAdapter.setSuffix(" 日"); dayAdapter.setDayTextInterface(dayMidTextInterface); day.setVisibleItems(Constants.TIME_LIST_NUMBER); day.setViewAdapter(dayAdapter); day.setCyclic(true); day.setCurrentItem(model.day - 1); day.addScrollingListener(new OnWheelScrollListener() { @Override public void onScrollingStarted(WheelView wheel) { } @Override public void onScrollingFinished(WheelView wheel) { model.day = wheel.getCurrentItem() + 1; day.invalidateWheel(true); } }); } /* 切换年,月时,刷新日滚轮的最大天数 */ private void freshDayWheel() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, model.year); calendar.set(Calendar.MONTH, model.month - 1); int maxDays = calendar.getActualMaximum(Calendar.DATE); dayAdapter = new DayTimeNumericWheelAdapter(BirthdaySetActivity.this, 1, maxDays); dayAdapter.setItemResource(R.layout.wheel_nemeric_text_item); dayAdapter.setItemTextResource(R.id.numeric_text); dayAdapter.setSuffix(" 日"); dayAdapter.setDayTextInterface(dayMidTextInterface); day.setViewAdapter(dayAdapter); int curDay = Math.min(maxDays, day.getCurrentItem() + 1); day.setCurrentItem(curDay - 1, true); model.day = curDay; } // 日期内部类 class DateModel { int year, month, day; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.ibLeft: finish(); break; case R.id.btnRight: yearSelected = model.year; monthSelected = month.getCurrentItem() + 1; daySelected = day.getCurrentItem() + 1; dateSelected[0] = yearSelected; dateSelected[1] = monthSelected; dateSelected[2] = daySelected; Calendar finalDate = Calendar.getInstance(); finalDate.set(yearSelected, monthSelected - 1, daySelected); Log.i("", dateSelected.toString()); if (finalDate.after(calendar)) {// 最后选择的要在当前时间之前。 Toast.makeText(BirthdaySetActivity.this, "出生日期不能大于等于当前日期哦", Toast.LENGTH_SHORT).show(); } else { // 把年,月,日,传递给上层界面。 Intent birthdayintent = new Intent(); birthdayintent.putExtra("BRITHDAYSELECTED", dateSelected); // 将日期转换为string类型 String birthday = String.valueOf(dateSelected[0]) + "-" + String.valueOf(dateSelected[1] + "-" + String.valueOf(dateSelected[2])); setResult(Activity.RESULT_OK, birthdayintent); String nickName = ""; String sex = ""; String signature = ""; String newPassword = ""; if (NetUtil.checkNet(BirthdaySetActivity.this)) { new personInfoAddTask(nickName, birthday, sex, signature, newPassword).execute(); } } break; default: break; } } YearMidTextInterface yearMidTextInterface=new YearMidTextInterface() { @Override public void changeYearText(int index, TextView textView) { if (index == year.getCurrentItem()) { textView.setTextColor(0xFF3A788B); } else { textView.setTextColor(0xFF000000); } } }; MonthMidTextInterface monthMidTextInterface=new MonthMidTextInterface() { @Override public void changeMonthText(int index, TextView textView) { if (index == month.getCurrentItem()) { textView.setTextColor(0xFF3A788B); } else { textView.setTextColor(0xFF000000); } } }; DayMidTextInterface dayMidTextInterface=new DayMidTextInterface() { @Override public void changeDayText(int index, TextView textView) { if (index == day.getCurrentItem()) { textView.setTextColor(0xFF3A788B); } else { textView.setTextColor(0xFF000000); } } }; /* * @Override protected void onActivityResult(int requestCode, int * resultCode, Intent data) { if (resultCode == RESULT_OK) { switch * (requestCode) { case Constants.PERSONALINFONUM: /** * 用户修改或添加个人资料 * * */ private class personInfoAddTask extends AsyncTask<Void, Void, JSONObject> { private String nickName; private String birthday; private String sex; private String signature; private String newPassword; private String provinceId; private String cityId; private File avatarFile = null; /** * @param nickName * @param birthday * @param sex * @param signature * @param address * @param newPassword */ public personInfoAddTask(String nickName, String birthday, String sex, String signature, String newPassword) { this.nickName = nickName; this.birthday = birthday; this.sex = sex; this.signature = signature; this.newPassword = newPassword; } @Override protected void onPreExecute() { super.onPreExecute(); showPd(R.string.loading); } @Override protected JSONObject doInBackground(Void... params) { String openId = null; int loginType = SharedPrefUtil.getLoginType(BirthdaySetActivity.this); if (loginType == Constants.LOGIN_QQ) { openId = SharedPrefUtil.getQQOpenid(BirthdaySetActivity.this); } else if (loginType == Constants.LOGIN_SINA) { openId = SharedPrefUtil.getWeiboUid(BirthdaySetActivity.this); } else { } int userId = SharedPrefUtil.getUid(BirthdaySetActivity.this); String password = SharedPrefUtil.getPassword(BirthdaySetActivity.this); if (loginType == 0) { try { return new BusinessHelper().addUserInfor(userId, loginType, password, nickName, birthday, "", signature, newPassword,"","","", avatarFile); } catch (SystemException e) { e.printStackTrace(); } } else { try { return new BusinessHelper().thirdAddUserInfor(userId, loginType, openId, nickName, birthday, "", signature,"","","", avatarFile); } catch (SystemException e) { e.printStackTrace(); } } return null; } protected void onPostExecute(JSONObject result) { super.onPostExecute(result); dismissPd(); if (result != null) { try { int status = result.getInt("status"); if (status == Constants.REQUEST_SUCCESS) { showShortToast("生日设置成功"); finish(); } else { showShortToast("生日设置失败"); } } catch (JSONException e) { e.printStackTrace(); } } else { // showShortToast(result.getString("message")); showShortToast("服务连接失败"); } } } }