package com.partynetwork.iparty.login; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.RelativeLayout; import android.widget.TextView; import com.openfire.manager.XmppConnection; import com.partynetwork.dataprovider.DataProvider.IJsonResultListener; import com.partynetwork.dataprovider.json.NetworkEntity; import com.partynetwork.dataprovider.json.struct.FileRequest; import com.partynetwork.dataprovider.json.struct.FileResponse; import com.partynetwork.dataprovider.json.struct.Login_registerRequest; import com.partynetwork.dataprovider.json.struct.Login_registerResponse; import com.partynetwork.dataprovider.util.StringUtil; import com.partynetwork.dataprovider.util.T; import com.partynetwork.iparty.R; import com.partynetwork.iparty.app.AppContext; import com.partynetwork.iparty.app.common.BitmapManager; import com.partynetwork.iparty.app.common.UIHelper; import com.partynetwork.iparty.info.RegisterUserInfo; import com.partynetwork.myview.myimageview.CircularImage; import com.partynetwork.myview.myimageview.ImagePicker; import com.partynetwork.myview.mytoast.LoadingDialog; import com.partynetwork.myview.wheelview.NumericWheelAdapter; import com.partynetwork.myview.wheelview.WheelAdapter; import com.partynetwork.myview.wheelview.WheelPicker; import com.partynetwork.myview.wheelview.WheelView; import com.partynetwork.myview.wheelview.WheelPicker.WheelListener; import com.baidu.mobstat.StatService; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; /** * 注册界面 * * @author sys * @version 1.1 * @since 2014.01.18 */ public class Register4 extends FragmentActivity implements OnClickListener, IJsonResultListener { /* 控件声明注册 */ // 返回按钮 @ViewInject(R.id.head_left_tv) private TextView backButton; // 头像选择 @ViewInject(R.id.register_head) private RelativeLayout chooseHead; // 照相机图标 @ViewInject(R.id.register_camera) private TextView chooseCamera; @ViewInject(R.id.head_civ) private CircularImage head_iv; // 用户名 @ViewInject(R.id.register_name_tv) private EditText userName; // 年龄 @ViewInject(R.id.register_age_tv) private TextView age_tv; // 性别:女 @ViewInject(R.id.register_women_tv) TextView women; // 性别:男 @ViewInject(R.id.register_man_tv) TextView man; // 性别:中性 @ViewInject(R.id.register_girlandboy_tv) TextView girlandboy; // 用户状态文本框 @ViewInject(R.id.register_partystate_edit) EditText partyState; // 选择城市 @ViewInject(R.id.register_city_tv) TextView city_tv; // 可供选择的状态列表 private List<TextView> state_list = new ArrayList<TextView>(); // 可供选择的性别列表 private List<TextView> sex_list = new ArrayList<TextView>(); // 创建账户 @ViewInject(R.id.head_right_tv) TextView mRegisterButton; private RegisterUserInfo user; private int sex; private String name; private int age; private String state; private int city; /** * 文件存放路径 */ private String file; /** * 照片选择对象 */ private ImagePicker imagePicker; private boolean hasHead; // 登陆进度提示框 private LoadingDialog dialog; /** 滚轮弹窗 */ private WheelPicker wheelPicker; private BitmapManager bitmapManager; private String registerOpenfire; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.DefaultLightTheme); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.register_four); ViewUtils.inject(this); bitmapManager = new BitmapManager(); init(); } private int[] id = new int[] { R.id.tv_1, R.id.tv_2, R.id.tv_3, R.id.tv_4, R.id.tv_5, R.id.tv_6, R.id.tv_7, R.id.tv_8, R.id.tv_9, R.id.tv_10 }; private void init() { // 状态列表 for (int i = 0; i < 10; i++) { TextView tv = (TextView) findViewById(id[i]); tv.setOnClickListener(this); state_list.add(tv); } // 性别列表 sex_list.add(man); sex_list.add(women); sex_list.add(girlandboy); user = getIntent().getParcelableExtra("user"); imagePicker = new ImagePicker(this, true); setSexBg(R.id.register_man_tv); dialog = new LoadingDialog(this, "注册中……"); wheelPicker = new WheelPicker(this, 1, new NumericWheelAdapter(18, 100), ageWheelListener); } @OnClick({ R.id.head_left_tv, R.id.head_civ, R.id.register_camera, R.id.register_women_tv, R.id.register_man_tv, R.id.register_girlandboy_tv, R.id.register_city_tv, R.id.head_right_tv, R.id.register_age_tv }) public void btnClick(View v) { switch (v.getId()) { case R.id.head_left_tv: // 返回按钮 finish(); // 界面消失动画 overridePendingTransition(R.anim.animation_enterfromleft, R.anim.animation_fadefromright); break; case R.id.head_civ: case R.id.register_camera: // 头像选择 imagePicker.show(chooseHead); break; case R.id.register_women_tv: // 选择性别女 setSexBg(R.id.register_women_tv); break; case R.id.register_man_tv: // 选择性别男 setSexBg(R.id.register_man_tv); break; case R.id.register_girlandboy_tv: // 选择性别中性 setSexBg(R.id.register_girlandboy_tv); break; case R.id.register_city_tv: // 城市选择界面 Intent intent = new Intent(Register4.this, ProvinceActivity.class); startActivityForResult(intent, 0); // 设置界面出现动画 overridePendingTransition(R.anim.animation_enterfromright, R.anim.animation_fadefromleft); break; case R.id.head_right_tv: if (checkIn()) { dialog.show(); user.setUserAge(age); user.setUserName(name); user.setUserState(state); user.setUserSex(sex); if (hasHead) { sendFileRequest(); } else { sendRegisterRequest(""); } } // 打印出注册信息 if (true) { } break; case R.id.register_age_tv: // 年龄 wheelPicker.showAt(backButton); break; default: break; } } /** * 验证输入数据的正确性 */ private boolean checkIn() { // 用户名验证 name = userName.getText().toString(); if (!hasHead) { T.showTips(Register4.this, R.drawable.tips_error, "请选择用户头像!"); return false; } if (name.length() == 0) { T.showTips(Register4.this, R.drawable.tips_error, "太懒了吧,名字都不输。"); return false; } if (name.length() > 16) { T.showTips(Register4.this, R.drawable.tips_error, "用户名好长,能短点吗?"); return false; } try { age = Integer.parseInt(age_tv.getText().toString()); if (age < 18 || age > 100) { T.showTips(Register4.this, R.drawable.tips_error, "你的年龄不符合规定啊。"); return false; } } catch (NumberFormatException e) { T.showTips(Register4.this, R.drawable.tips_error, "你确定输了正确的年龄?"); return false; } state = partyState.getText().toString(); int l = state.length(); if (l != 3) { T.showTips(Register4.this, R.drawable.tips_error, "状态只能是3个字哦~"); return false; } if (city == 0) { T.showTips(Register4.this, R.drawable.tips_error, "你来自外星?"); return false; } return true; } private int[] sex_normal = new int[] { R.drawable.sex_boy_middle_normal, R.drawable.sex_girl_middle_normal, R.drawable.sex_neutral_middle_normal }; private int[] sex_selected = new int[] { R.drawable.sex_boy_middle_pressed, R.drawable.sex_girl_middle_pressed, R.drawable.sex_neutral_middle_pressed }; private String[] text_color = new String[] { "#009DE6", "#EB66A3", "#9968C4" }; /** * 设置性别的选中效果 * * @param id */ private void setSexBg(int id) { for (int i = 0; i < sex_list.size(); i++) { TextView ll = sex_list.get(i); if (ll.getId() == id) { ll.setBackgroundResource(R.drawable.stroke_btn); Drawable drawable = getResources().getDrawable(sex_selected[i]); // / 这一步必须要做,否则不会显示. drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); ll.setCompoundDrawables(drawable, null, null, null); ll.setTextColor(Color.parseColor(text_color[i])); sex = i; } else { ll.setBackgroundResource(0); Drawable drawable = getResources().getDrawable(sex_normal[i]); // / 这一步必须要做,否则不会显示. drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); ll.setCompoundDrawables(drawable, null, null, null); ll.setTextColor(Color.parseColor("#8F8F8F")); } } } /** * 设置状态的选中效果 * * @param id */ private void setStateBg(int id) { for (int i = 0; i < state_list.size(); i++) { TextView tv = state_list.get(i); if (tv.getId() == id) { tv.setBackgroundResource(R.drawable.stroke_btn); tv.setTextColor(Color.DKGRAY); partyState.setText(tv.getText().toString()); } else { tv.setBackgroundResource(0); tv.setTextColor(Color.GRAY); } } } /** * 响应状态的选中效果 */ public void onClick(View v) { switch (v.getId()) { case R.id.tv_1: setStateBg(R.id.tv_1); break; case R.id.tv_2: setStateBg(R.id.tv_2); break; case R.id.tv_3: setStateBg(R.id.tv_3); break; case R.id.tv_4: setStateBg(R.id.tv_4); break; case R.id.tv_5: setStateBg(R.id.tv_5); break; case R.id.tv_6: setStateBg(R.id.tv_6); break; case R.id.tv_7: setStateBg(R.id.tv_7); break; case R.id.tv_8: setStateBg(R.id.tv_8); break; case R.id.tv_9: setStateBg(R.id.tv_9); break; case R.id.tv_10: setStateBg(R.id.tv_10); break; default: break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 0) { // 设置城市 city = data.getIntExtra(ProvinceActivity.CITY_ID, ProvinceActivity.DEFAULT_CITY_ID); city_tv.setText(data.getStringExtra(ProvinceActivity.CITY_NAME)); user.setUserCity(city); } else { file = imagePicker.onActivityResult(requestCode, resultCode, data); if (file != null && !file.equals("")) { user.setUserHead(file); bitmapManager.loadBitmap(file, head_iv); head_iv.setVisibility(View.VISIBLE); chooseCamera.setVisibility(View.GONE); hasHead = true; } } } /** * 年龄滚轮的监听 */ private WheelListener ageWheelListener = new WheelListener() { @Override public WheelAdapter onChange(WheelView wheel, int oldValue, int newValue) { return null; } @Override public void confirm(String str) { StringUtil.setText(age_tv, str); } @Override public void cancel() { } }; /** * 发起网络请求 */ public void onNetworkRequest() { } /** * 网络请求失败 */ public void onResultFail(String resutlt) { if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } T.showTips(Register4.this, R.drawable.tips_error, resutlt); } /** * 网络请求成功 */ public void onResultSuccess(NetworkEntity entity) { if (entity.getRequest().getAction().equals(new FileRequest().getAction())) { FileResponse fileResponse = (FileResponse) entity.getResponse(); sendRegisterRequest(fileResponse.getDetails()[0]); } if (entity.getRequest().getAction().equals(new Login_registerRequest().getAction())) { if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } T.showTips(Register4.this, R.drawable.tips_smile, "注册成功!"); Login_registerResponse registerResponse = (Login_registerResponse) entity.getResponse(); // 全局保存当前用 AppContext.getInstance().saveUserInfo(registerResponse.getDetails()); // 注册 openfire 聊天服务器 // 跳转到主界面 UIHelper.showLoginPage(this); finish(); } } /** * 发送注册的请求 */ private void sendRegisterRequest(String fileUrl) { Login_registerRequest request = new Login_registerRequest(); request.setUserName(user.getUserName()); request.setUserAge(user.getUserAge()); request.setUserCity(user.getUserCity()); request.setUserSex(user.getUserSex()); request.setUserEmail(user.getUserEmail()); request.setUserHeadUrl(fileUrl); request.setUserPassword(user.getUserPassword()); request.setUserPhone(user.getUserPhone()); request.setUserState(user.getUserState()); request.setRegisterType(user.getRegisterType()); AppContext.getInstance().getmDataProvider().getJsonFromNetwork(request, this); } /** * 发送文件上传请求 */ private void sendFileRequest() { String[] fileArray = new String[] { file }; FileRequest fileRequest = new FileRequest(); fileRequest.setFilePath(fileArray); AppContext.getInstance().getmDataProvider().getJsonFromNetwork(fileRequest, this); } @Override protected void onResume() { StatService.onResume(this); super.onResume(); } @Override public void onPause() { StatService.onPause(this); super.onResume(); } }