package com.edufound.android.xyyf.activity; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.Process; import android.support.annotation.Nullable; import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.WindowManager; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.edufound.android.xyyf.R; import com.edufound.android.xyyf.application.EApplication; import com.edufound.android.xyyf.base.BaseActivity; import com.edufound.android.xyyf.config.AppUtils; import com.edufound.android.xyyf.phonelogin.PhoneLoginPersenter; import com.edufound.android.xyyf.phonelogin.PhoneLoginView; import com.edufound.android.xyyf.util.Logger; import com.edufound.android.xyyf.util.ToastUtil; import com.huawei.hmf.tasks.Task; import com.huawei.hms.common.ApiException; import com.huawei.hms.support.account.AccountAuthManager; import com.huawei.hms.support.account.request.AccountAuthParams; import com.huawei.hms.support.account.request.AccountAuthParamsHelper; import com.huawei.hms.support.account.result.AuthAccount; import com.huawei.hms.support.account.service.AccountAuthService; import org.json.JSONException; import java.io.IOException; public class PhoneNumLoginActivity extends BaseActivity implements PhoneLoginView { PhoneLoginPersenter mPersenter; Activity mActivity; final int COUNT_DOWN = 0x5564; EditText phone_number; EditText intpu_verifaction; TextView phonenumber_getverifcation; TextView phonenumber_login; TextView change_text; int countDownNum = 60; int oldWidth = -1; boolean haveError = false; LinearLayout mHWLogin; ImageView mHWIcon; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login_phonenumber); setFinishOnTouchOutside(false); mActivity = this; mPersenter = new PhoneLoginPersenter(this); init(); } void init() { phone_number = (EditText) findViewById(R.id.phonenumber_phonenumber); intpu_verifaction = (EditText) findViewById(R.id.phonenumber_verifcation); phonenumber_getverifcation = (TextView) findViewById(R.id.phonenumber_getverifcation); phonenumber_login = (TextView) findViewById(R.id.phonenumber_login); change_text = (TextView) findViewById(R.id.change_text); setTextSize(phone_number, 6); setTextSize(intpu_verifaction, 6); setTextSize(phonenumber_getverifcation, 6); setTextSize(phonenumber_login, 6); change_text.setText("切换一键登录"); if (getIntent().getStringExtra("code") != null) { change_text.setVisibility(View.GONE); haveError = true; } LinearLayout parent = findViewById(R.id.phonenumber_page); ImageView loginicon = findViewById(R.id.loginicon); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(AppUtils.dp2px(this, 90), AppUtils.dp2px(this, 90)); params.gravity = Gravity.CENTER; params.setMargins(0, AppUtils.dp2px(this, 30), 0, 0); loginicon.setLayoutParams(params); loginicon.setVisibility(View.VISIBLE); // FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); // params.setMargins(0, AppUtils.dp2px(this, 20), 0, AppUtils.dp2px(this, 20)); // parent.setLayoutParams(params); change_text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // MainActivity.getInstance().mPersenter.getJsInterfaces().showPhoneNumberLogin(2); finish(); } }); phonenumber_getverifcation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //此处获取验证码 } }); phonenumber_getverifcation.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: phonenumber_getverifcation.setBackgroundResource(R.drawable.shape_login_phonenumber_getverification_selected); phonenumber_getverifcation.setTextColor(Color.WHITE); if (oldWidth <= 0) { oldWidth = phonenumber_getverifcation.getWidth(); } break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: try { mPersenter.getVCode(phone_number.getText().toString()); } catch (IOException e) { e.printStackTrace(); } break; } return false; } }); phonenumber_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { mPersenter.LoginByVCode(phone_number.getText().toString(), intpu_verifaction.getText().toString()); } catch (JSONException e) { e.printStackTrace(); } } }); View view = findViewById(R.id.otherlogin_include); mHWIcon = view.findViewById(R.id.otherlogin_icon_huawei); mHWIcon.getLayoutParams().width = AppUtils.dp2px(this, 57.6f); mHWIcon.getLayoutParams().height = AppUtils.dp2px(this, 57.6f); mHWLogin = view.findViewById(R.id.otherlogin_login_huawei); mHWIcon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Logger.e("华为登录"); AccountAuthParams authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setAuthorizationCode().createParams(); AccountAuthService service = AccountAuthManager.getService(getActivity(), authParams); getActivity().startActivityForResult(service.getSignInIntent(), 8888); } }); } void setTextSize(View view, int dpsize) { if (view instanceof EditText) { ((EditText) view).setTextSize(AppUtils.dp2px(this, dpsize)); } else if (view instanceof TextView) { ((TextView) view).setTextSize(AppUtils.dp2px(this, dpsize)); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 8888: Task authAccountTask = AccountAuthManager.parseAuthResultFromIntent(data); if (authAccountTask.isSuccessful()) { // ToastUtil.showToast("登录成功"); //登录成功,获取用户的帐号信息和Authorization Code AuthAccount authAccount = authAccountTask.getResult(); try { MainActivity.getInstance().loadJSMehtodPost("huaweiLoginSuccess(" + authAccount.toJson() + ")"); MainActivity.getInstance().mPersenter.getJsInterfaces().quitLoginPage(); finish(); } catch (JSONException e) { e.printStackTrace(); } } else { //登录失败 int code = ((ApiException) authAccountTask.getException()).getStatusCode(); ToastUtil.showToast("登录失败:" + code); Logger.e("sign in failed:" + code); } break; } } @Override protected void onDestroy() { super.onDestroy(); removeAllHandler(); } Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case COUNT_DOWN: if (countDownNum <= 0) { countDownNum = 60; phonenumber_getverifcation.setEnabled(true); phonenumber_getverifcation.setText("获取验证码"); // mPersenter.WidthAnim(phonenumber_getverifcation, oldWidth, 500); return true; } countDownNum--; phonenumber_getverifcation.setText(String.valueOf(countDownNum + "秒后重发")); handler.sendEmptyMessageDelayed(COUNT_DOWN, 1000); break; } return false; } }); void removeAllHandler() { handler.removeMessages(COUNT_DOWN); } @Override public Activity getActivity() { return mActivity; } @Override public void changeVText(int type) { switch (type) { case 0: //请求成功等待验证码 handler.post(new Runnable() { @Override public void run() { // mPersenter.WidthAnim(phonenumber_getverifcation, phonenumber_getverifcation.getHeight(), 500); phonenumber_getverifcation.setEnabled(false); handler.sendEmptyMessageDelayed(COUNT_DOWN, 0); } }); break; case 1: handler.post(new Runnable() { @Override public void run() { phonenumber_getverifcation.setBackgroundResource(R.drawable.shape_login_phonenumber_getverification); phonenumber_getverifcation.setTextColor(Color.parseColor("#FFA301")); countDownNum = 60; phonenumber_getverifcation.setEnabled(true); phonenumber_getverifcation.setText("获取验证码"); // mPersenter.WidthAnim(phonenumber_getverifcation, oldWidth, 500); handler.removeMessages(COUNT_DOWN); } }); break; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_ESCAPE: Logger.e("haveError:" + haveError); if (haveError) { EApplication.clearActivity(); System.exit(0); android.os.Process.killProcess(Process.myPid()); } else { finish(); } break; } return super.onKeyDown(keyCode, event); } }