This commit is contained in:
fengjignqi
2026-05-16 16:19:39 +08:00
commit 1b1575eb8a
1632 changed files with 242221 additions and 0 deletions

View 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) {
}
}