package com.partynetwork.iparty.login; import com.partynetwork.dataprovider.DataProvider.IJsonResultListener; import com.partynetwork.dataprovider.json.NetworkEntity; import com.partynetwork.dataprovider.json.struct.Login_loginResetAuthcodeRequest; import com.partynetwork.dataprovider.json.struct.Login_loginResetAuthcodeResponse; import com.partynetwork.dataprovider.json.struct.Login_registerAuthcodeRequest; import com.partynetwork.dataprovider.json.struct.Login_registerAuthcodeResponse; import com.partynetwork.iparty.R; import com.partynetwork.iparty.app.AppContext; import com.partynetwork.iparty.app.ui.BaseActivity; import com.partynetwork.iparty.info.RegisterUserInfo; 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; import eu.inmite.android.lib.dialogs.ISimpleDialogListener; import eu.inmite.android.lib.dialogs.SimpleDialogFragment; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.CountDownTimer; import android.support.v4.app.FragmentActivity; import android.view.View; import android.view.Window; import android.widget.EditText; import android.widget.TextView; /** * 注册界面1 * * @author sys * @version 1.0 * @since 2013.09.27 */ public class RegisterTwoActivity extends FragmentActivity implements IJsonResultListener, ISimpleDialogListener { // 上一步按钮 @ViewInject(R.id.head_left_tv) TextView back_tv; // 下一步按钮 @ViewInject(R.id.head_right_tv) TextView next_tv; // 类别内容 @ViewInject(R.id.register_type_content_tv) TextView type_content_tv; // 验证码 @ViewInject(R.id.register_type_et) EditText type_et; // 倒计时 @ViewInject(R.id.register_two_time) TextView time_tv; // 倒计时对象 private MyCount mc; private boolean isOver; private RegisterUserInfo user; private String authcode;//="1234"; // 注册类型 private int registerType; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setTheme(R.style.DefaultLightTheme); setContentView(R.layout.register_two); ViewUtils.inject(this); init(); } private void init() { user = getIntent().getParcelableExtra("user"); mc = new MyCount(60000, 1000); mc.start(); initType(); } /** * 初始化注册类型界面 */ private void initType() { registerType = getIntent().getIntExtra("registerType", 0); if (registerType == 0) { type_et.setHint("输入手机验证码"); type_content_tv.setText("+86 " + user.getUserPhone()); sendRegisterAuthcode(); } else if (registerType == 1) { type_et.setHint("输入邮箱验证码"); type_content_tv.setText(user.getUserEmail()); sendRegisterAuthcode(); } else if (registerType == 2) { type_et.setHint("输入手机验证码"); type_content_tv.setText("+86 " + user.getUserPhone()); sendResetAuthcode(); } else if (registerType == 3) { type_et.setHint("输入邮箱验证码"); type_content_tv.setText(user.getUserEmail()); sendResetAuthcode(); } } @OnClick({ R.id.head_left_tv, R.id.head_right_tv, R.id.register_two_time }) 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_right_tv: toNext(); break; case R.id.register_two_time: if (isOver) { mc.start(); if (registerType == 0 || registerType == 1) { sendRegisterAuthcode(); } else if (registerType == 2 || registerType == 3) { sendResetAuthcode(); } } break; default: break; } } /** * 跳转到下一界面 */ private void toNext() { /* 判断当前验证码是否正确 */ // 获取当前输入验证码 String text = type_et.getText().toString(); // 判断是否相等 if (text.equals(authcode)) { Intent intent = new Intent(RegisterTwoActivity.this, RegisterThreeActivity.class); intent.putExtra("user", user); intent.putExtra("registerType", registerType); startActivity(intent); // 设置界面出现动画 overridePendingTransition(R.anim.animation_enterfromright, R.anim.animation_fadefromleft); } else { SimpleDialogFragment.createBuilder(this, getSupportFragmentManager()) .setMessage("对不起,你输入的验证码有误!").setNegativeButtonText("确定").show(); } } /** 自定义一个继承CountDownTimer的内部类,用于实现计时器的功能 */ class MyCount extends CountDownTimer { /** * MyCount的构造方法 * * @param millisInFuture 要倒计时的时间 * @param countDownInterval 时间间隔 */ public MyCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } /** * 在进行倒计时的时候执行的操作 */ @Override public void onTick(long millisUntilFinished) { isOver = false; long second = millisUntilFinished / 1000; time_tv.setBackgroundColor(Color.parseColor("#d3d2d5")); time_tv.setText("重发验证码(" + second + ")"); time_tv.setTextColor(Color.GRAY); } /** * 倒计时结束后要做的事情 */ @Override public void onFinish() { isOver = true; time_tv.setBackgroundColor(Color.parseColor("#1585d6")); time_tv.setText("重发验证码"); time_tv.setTextColor(Color.WHITE); } } /** * 发送注册时的验证码短信 */ private void sendRegisterAuthcode() { Login_registerAuthcodeRequest request = new Login_registerAuthcodeRequest(); if (registerType == 0) { request.setAuthcodeType(0); request.setAuthcodeContent(user.getUserPhone()); } else if (registerType == 1) { request.setAuthcodeType(1); request.setAuthcodeContent(user.getUserEmail()); } AppContext.getInstance().getmDataProvider().getJsonFromNetwork(request, this); } /** * 发送重置密码时的验证码短信 */ private void sendResetAuthcode() { Login_loginResetAuthcodeRequest request = new Login_loginResetAuthcodeRequest(); if (registerType == 2) { request.setResetType(0); request.setResetContent(user.getUserPhone()); } else if (registerType == 3) { request.setResetType(1); request.setResetContent(user.getUserEmail()); } AppContext.getInstance().getmDataProvider().getJsonFromNetwork(request, this); } public void onNetworkRequest() { } public void onResultSuccess(NetworkEntity entity) { if (entity.getRequest().getAction().equals(new Login_registerAuthcodeRequest().getAction())) { Login_registerAuthcodeResponse authcode = (Login_registerAuthcodeResponse) entity .getResponse(); this.authcode = authcode.getDetails().getAuthcode(); } if (entity.getRequest().getAction() .equals(new Login_loginResetAuthcodeRequest().getAction())) { Login_loginResetAuthcodeResponse authcode = (Login_loginResetAuthcodeResponse) entity .getResponse(); this.authcode = authcode.getDetails().getAuthcode(); } } public void onResultFail(String result) { SimpleDialogFragment.createBuilder(this, getSupportFragmentManager()).setMessage(result) .setNegativeButtonText("确定").setRequestCode(4).show(); } /** * 覆盖方法 * * @see com.partynetwork.iparty.app.ui.BaseActivity#onNegativeButtonClicked(int) */ @Override public void onNegativeButtonClicked(int requestCode) { if (requestCode == 4) { this.finish(); return; } } @Override protected void onResume() { StatService.onResume(this); super.onResume(); } @Override public void onPause() { StatService.onPause(this); super.onResume(); } @Override public void onPositiveButtonClicked(int requestCode) { // TODO Auto-generated method stub } }