first
This commit is contained in:
313
app/src/main/java/com/ckkj/water/login/LoginActivity.java
Normal file
313
app/src/main/java/com/ckkj/water/login/LoginActivity.java
Normal file
@@ -0,0 +1,313 @@
|
||||
package com.ckkj.water.login;
|
||||
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.os.Handler;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.ckkj.water.custom.view.PhotoViewActivity;
|
||||
import com.ckkj.water.utils.DownFileUtil;
|
||||
import com.google.gson.Gson;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.ConstantUtil;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.databinding.LoginLayoutBinding;
|
||||
import com.ckkj.water.login.entity.LoginEntity;
|
||||
import com.ckkj.water.login.mvp.LoginContract;
|
||||
import com.ckkj.water.login.mvp.LoginImpl;
|
||||
import com.ckkj.water.login.mvp.LoginPresenter;
|
||||
import com.ckkj.water.main.activity.MainActivity;
|
||||
import com.ckkj.water.mine.WebviewUserAgreement;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.click.ClickUtil;
|
||||
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
||||
import com.ckkj.water.utils.manager.MingDengUserInfoManager;
|
||||
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.lxj.xpopup.interfaces.OnSelectListener;
|
||||
|
||||
|
||||
public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresenter>
|
||||
implements LoginContract.LoginView {
|
||||
|
||||
private boolean mYinsiConfirm = false;
|
||||
//当前登录方式 验证码100 密码 200
|
||||
private static int LOGIN_TYPE_STATUS_CODE = 100;
|
||||
|
||||
@Override
|
||||
public LoginPresenter createPresenter() {
|
||||
return new LoginPresenter(new LoginImpl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData(Bundle savedInstanceState) {
|
||||
super.initData(savedInstanceState);
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarColor(R.color.white)
|
||||
.statusBarDarkFont(true)
|
||||
.init();
|
||||
|
||||
setupAgreementText();
|
||||
|
||||
initListener();
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
setClick(viewBinding.tabCode);
|
||||
setClick(viewBinding.tabPsd);
|
||||
setClick(viewBinding.tvGetVerifiCode);
|
||||
setClick(viewBinding.tvLogin);
|
||||
setClick(viewBinding.tvGoRegister);
|
||||
setClick(viewBinding.tvLanguage);
|
||||
setClick(viewBinding.tvResetPsd);
|
||||
}
|
||||
|
||||
private void setClick(View view) {
|
||||
view.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
private void setupAgreementText() {
|
||||
String prefix = getString(R.string.login_agreement_prefix);
|
||||
String privacy = getString(R.string.login_privacy_policy);
|
||||
String and = getString(R.string.login_and);
|
||||
String userAgreement = getString(R.string.login_user_agreement);
|
||||
String content = prefix + privacy + and + userAgreement;
|
||||
|
||||
SpannableString spannableString = new SpannableString(content);
|
||||
|
||||
int privacyStart = prefix.length();
|
||||
int privacyEnd = privacyStart + privacy.length();
|
||||
ClickableSpan privacyPolicySpan = new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt("from_requse_code", WebviewUserAgreement.PRIVACY_CODE);
|
||||
goToWihoutNoPresent(mContext, WebviewUserAgreement.class, bundle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDrawState(@NonNull TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu));
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
};
|
||||
spannableString.setSpan(privacyPolicySpan, privacyStart, privacyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
int userStart = privacyEnd + and.length();
|
||||
int userEnd = userStart + userAgreement.length();
|
||||
ClickableSpan userAgreementSpan = new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt("from_requse_code", WebviewUserAgreement.AGREEMENT_CODE);
|
||||
goToWihoutNoPresent(mContext, WebviewUserAgreement.class, bundle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDrawState(@NonNull TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu));
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
};
|
||||
spannableString.setSpan(userAgreementSpan, userStart, userEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
// viewBinding.tvAgreement.setText(spannableString);
|
||||
// viewBinding.tvAgreement.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
|
||||
case R.id.tv_go_register:
|
||||
goTo(mContext, RegisterActivity.class,null);
|
||||
break;
|
||||
|
||||
case R.id.tab_code://验证码登录
|
||||
LOGIN_TYPE_STATUS_CODE = 100;
|
||||
viewBinding.tvLoginByCode.setTextColor(mContext.getResources().getColor(R.color.color_222222));
|
||||
viewBinding.tvLoginByCode.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
viewBinding.viewLineCode.setVisibility(VISIBLE);
|
||||
|
||||
viewBinding.tvLoginByPsd.setTextColor(mContext.getResources().getColor(R.color.color_999999));
|
||||
viewBinding.tvLoginByPsd.setTypeface(Typeface.DEFAULT);
|
||||
viewBinding.viewLinePsd.setVisibility(GONE);
|
||||
|
||||
viewBinding.linearVerfiCode.setVisibility(VISIBLE);
|
||||
viewBinding.linearPsd.setVisibility(GONE);
|
||||
viewBinding.tvResetPsd.setVisibility(GONE);
|
||||
break;
|
||||
|
||||
case R.id.tab_psd://密码登录
|
||||
LOGIN_TYPE_STATUS_CODE = 200;
|
||||
viewBinding.tvLoginByPsd.setTextColor(mContext.getResources().getColor(R.color.color_222222));
|
||||
viewBinding.tvLoginByPsd.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
viewBinding.viewLinePsd.setVisibility(VISIBLE);
|
||||
|
||||
viewBinding.tvLoginByCode.setTextColor(mContext.getResources().getColor(R.color.color_999999));
|
||||
viewBinding.tvLoginByCode.setTypeface(Typeface.DEFAULT);
|
||||
viewBinding.viewLineCode.setVisibility(GONE);
|
||||
|
||||
viewBinding.linearVerfiCode.setVisibility(GONE);
|
||||
viewBinding.linearPsd.setVisibility(VISIBLE);
|
||||
viewBinding.tvResetPsd.setVisibility(VISIBLE);
|
||||
break;
|
||||
|
||||
case R.id.tv_get_verifi_code:
|
||||
if (TextUtils.isEmpty(viewBinding.etAccount.getText().toString())) {
|
||||
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_empty));
|
||||
return;
|
||||
}
|
||||
if (!PhoneNumberUtils.checkPhoneNum(viewBinding.etAccount.getText().toString().trim()) &&
|
||||
!PhoneNumberUtils.checkEmail(viewBinding.etAccount.getText().toString().trim())) {
|
||||
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_invalid));
|
||||
return;
|
||||
}
|
||||
cdTimer.start();
|
||||
// showLoadingDialog();
|
||||
// mPresenter.getPhoneCode(
|
||||
// viewBinding.edPhoneInput.getText().toString().trim(),
|
||||
// AppConfig.SMS_CODE_TYPE_LOGIN);
|
||||
break;
|
||||
|
||||
case R.id.tv_language:
|
||||
new XPopup.Builder(mContext).asBottomList(
|
||||
"选择语言",
|
||||
new String[]{"中文", "English"},
|
||||
new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher},
|
||||
0,
|
||||
new OnSelectListener() {
|
||||
@Override
|
||||
public void onSelect(int position, String text) {
|
||||
ToastUtil.showShort(mContext,text);
|
||||
}
|
||||
},
|
||||
R.layout.select_language_layout,
|
||||
R.layout.select_language_item
|
||||
).show();
|
||||
break;
|
||||
// case R.id.checkbox_read:
|
||||
// if (mYinsiConfirm) {
|
||||
// mYinsiConfirm = false;
|
||||
// viewBinding.checkboxRead.setChecked(false);
|
||||
// } else {
|
||||
// mYinsiConfirm = true;
|
||||
// viewBinding.checkboxRead.setChecked(true);
|
||||
// }
|
||||
// break;
|
||||
// case R.id.tv_login_confirm:
|
||||
// if (TextUtils.isEmpty(viewBinding.edPhoneInput.getText().toString())) {
|
||||
// ToastUtil.showShort(mContext, getString(R.string.login_error_phone_empty));
|
||||
// return;
|
||||
// }
|
||||
// if (!PhoneNumberUtils.checkPhoneNum(viewBinding.edPhoneInput.getText().toString().trim())) {
|
||||
// ToastUtil.showShort(mContext, getString(R.string.login_error_phone_invalid));
|
||||
// return;
|
||||
// }
|
||||
// if (TextUtils.isEmpty(viewBinding.edCodeInput.getText().toString())) {
|
||||
// ToastUtil.showShort(mContext, getString(R.string.login_error_code_empty));
|
||||
// return;
|
||||
// }
|
||||
// if (viewBinding.edCodeInput.getText().toString().trim().length() < 6) {
|
||||
// ToastUtil.showShort(mContext, getString(R.string.login_error_code_invalid));
|
||||
// return;
|
||||
// }
|
||||
// if (!mYinsiConfirm) {
|
||||
// ToastUtil.showShort(mContext, getString(R.string.login_error_agreement));
|
||||
// return;
|
||||
// }
|
||||
// showLoadingDialog();
|
||||
// mPresenter.loginBySmsCode(
|
||||
// viewBinding.edPhoneInput.getText().toString().trim(),
|
||||
// viewBinding.edCodeInput.getText().toString().trim());
|
||||
// new Handler().postDelayed(() -> hideDialogLoading(), 1000);
|
||||
// break;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private CountDownTimer cdTimer = new CountDownTimer(6000, 1000) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
viewBinding.tvGetVerifiCode.setText("(" + millisUntilFinished / 1000 + ") " + getString(R.string.login_resend));
|
||||
viewBinding.tvGetVerifiCode.setSelected(true);
|
||||
viewBinding.tvGetVerifiCode.setClickable(false);
|
||||
viewBinding.tvGetVerifiCode.setTextColor(mContext.getColor(R.color.color_c8c8c8));
|
||||
viewBinding.tvGetVerifiCode.setBackground(mContext.getResources().getDrawable(R.drawable.shape_gray_50));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
viewBinding.tvGetVerifiCode.setText(getString(R.string.login_resend));
|
||||
viewBinding.tvGetVerifiCode.setSelected(false);
|
||||
viewBinding.tvGetVerifiCode.setClickable(true);
|
||||
viewBinding.tvGetVerifiCode.setTextColor(mContext.getColor(R.color.white));
|
||||
viewBinding.tvGetVerifiCode.setBackground(mContext.getResources().getDrawable(R.drawable.shape_green_50));
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void getPhoneCodeSuccess(BaseBean bean) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, getString(R.string.login_code_sent));
|
||||
cdTimer.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loginBySmsCodeSuccess(LoginEntity entity) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, getString(R.string.login_success));
|
||||
SharePreUtil.putBoolean(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_LOGIN, true);
|
||||
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_TOKEN, entity.getAccess_token());
|
||||
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_NICKNAME, entity.getUser_info().getNickname());
|
||||
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_ID, String.valueOf(entity.getUser_info().getUserId()));
|
||||
MingDengUserInfoManager.getInstance().setEntity(entity);
|
||||
MingDengUserInfoManager.getInstance().setUserInfo(entity.getUser_info());
|
||||
Gson gson = new Gson();
|
||||
String userInfoJson = gson.toJson(entity);
|
||||
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_INFO_JSON_CONTENT, userInfoJson);
|
||||
AppConfig.USER_LOGIN = true;
|
||||
AppConfig.USER_TOKEN = entity.getAccess_token();
|
||||
AppConfig.USER_ID = String.valueOf(entity.getUser_info().getUserId());
|
||||
new Handler().postDelayed(() -> {
|
||||
goTo(mContext, MainActivity.class, null);
|
||||
finish();
|
||||
}, 200);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutResId(Bundle savedInstanceState) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showError(String message) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user